إزالة العناصر من سلاسل URL في PHP
سؤال
سأكون ممتنا بعض المساعدة هنا:
ما أريد القيام به:
إزالة & inductionperpage = 10 من:
http: //localhost/thi/search/filter.html؟ اكتب = المميز & الصفحة = 2 & industressperpage = 10
وإنشاء رابط منه:
http: //localhost/thi/search/filter.html؟ اكتب = المميز & الصفحة = 2 & industerperpage = 15
إليك ما وصلت إليه حتى الآن:
<a href="<?php echo url::site(url::current()) . http_build_query($_GET) // don't know what follows ?>"
وظائف الإطار أنا أستخدمها هي:
عنوان URL :: الحالي () = إرجاع عنوان URL الحالي في تنسيق وحدة التحكم / الإجراء
عنوان URL :: الموقع () = إرجاع عنوان URL المطلق IE http: // localhost / الموقع / تحكم / العمل
لذلك لا بد لي من إزالة "& indittperpage" من السلسلة الناتجة في وظيفة http_build_query
ولكن أواجه مشكلة في ترميزات الأحرف ومثل هذه! الرجاء المساعدة!
إذن إليك مشكلة ترميز الأحرف:
$needle = '&itemsperpage';
$querystring = http_build_query($_GET) . '<br/>';
// echo $querystring . '<br/>';
$pos = strpos($querystring, $needle);
$remove = substr($querystring, ((int)$pos));
echo substr(str_replace($remove, '', $querystring), 1); // returns ';'
لا أستطيع إزالة السلسلة "& inditesperpage" من نتيجة http_build_query والتي هي: 'type = featured & page = 2 & inditesperpage = 10' ووظائف مثل نواتج strstr
المحلول
أود أن أفعل هذا:
$array = $_GET;
$array['itemsperpage'] = 15;
ثم استخدم التعليمات البرمجية الخاصة بك فقط، ولكن مع المتغير الجديد (و ?
):
<a href="<?php echo url::site(url::current()) . '?' . http_build_query($array)">
نصائح أخرى
ال httpquerystring. تحتوي الطبقة على العديد من الطرق للحصول على سلاسل الاستعلام وتعديلها وتعديلها و "ترجمة" charsets بهم.
يمكنك تحقيق التأثير الذي تبحث عنه عن طريق إزالة itemsperpage
عنصر من $_GET
صفيف قبل بناء سلسلة الاستعلام.
unset($_GET['itemsperpage']);
ثم استخدم الكود الذي كتبته بالفعل:
<a href="<?php echo url::site(url::current()) . http_build_query($_GET); ?>">
تحرير: أنا أساء قراءة مشاركتك. اعتقدت أنك تريد فقط إزالة زوج الحقل / القيمة من طلب الحصول على طلب. كل ما عليك فعله هو الكتابة فوق القيمة مع القيمة التي تريدها:
$_GET['itemsperpage'] = 15;
ثم استخدم الرمز الذي كتبته بالفعل.