Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Парсинг url
Форумы портала PHP.SU » PHP » Регулярные выражения » Парсинг url

Страниц (1): [1]
 

1. phphel - 28 Июня, 2010 - 06:32:48 - перейти к сообщению
Нужно спарсить $QUERY_STRING.

Нужно из параметров $QUERY_STRING оставить все кроме SID и lng

к примеру есть url типа "?sort=0&SID=eef7ae9a21937a5aa7a7870934ca685f&lng=rus"

должно остаться "?sort=0"

причем SID & lng может не быть
2. Joo - 28 Июня, 2010 - 07:42:25 - перейти к сообщению
Вот так:
PHP:
скопировать код в буфер обмена
  1. $result = preg_replace('/[?&](sid|lng)=.*?(?=&|$)/i', '', $QUERY_STRING );
3. phphel - 28 Июня, 2010 - 07:43:22 - перейти к сообщению
Разобрался..

function makeURL() {
$location = array();
foreach($_GET as $k => $v) {
if ($k != "lng")
$location[count($location)] = "$k=$v";
}
return (implode("&", $location) == "")?"":"?".implode("&", $location);
}

если кому надо..
(Добавление)
Вроде Ваш тоже работает. спасибо.

правда двойные параметры не удаляет
4. alexspb - 28 Июня, 2010 - 08:20:17 - перейти к сообщению
Joo, в регулярке в [?&] лучше экранировать вопрос: [\?&]

phphel, осваивайте ругялрные выражения - читается легче и экономит кучу времени
5. phphel - 28 Июня, 2010 - 08:44:40 - перейти к сообщению
alexspb, да, Вы правы, я их знаю..но не надостоточно уровне что бы использовать собственные регулярки в крупных приложениях.

всем спасибо.
6. Joo - 28 Июня, 2010 - 10:47:13 - перейти к сообщению
alexspb пишет:
Joo, в регулярке в [?&] лучше экранировать вопрос: [\?&]

В конкретно данном случае совершенно не нужно.
7. JustUserR - 28 Июня, 2010 - 15:48:07 - перейти к сообщению
phphel пишет:
Нужно из параметров $QUERY_STRING оставить все кроме SID и lng
Как вариант можете преобразовать данную переменную окружения к списку GET-параметров - для этого можете сделать разбиение explode по знакам амперсанда и дальнейшее разбиение значение по знакам равно и произвести urlencode-декодирование - после этого вы получить хеш-массив с ключами и значениями GET-переметров из которых можно исключить лишние значения

 

Powered by ExBB FM 1.0 RC1