Регулярки обработки ссылок

17.12.2017  13:43

Задача: откинуть хвосты ссылок, где гетом передаются переменные.

Урла такая: /tmp/t.php?clear_cache=Y&a=1

Решение:

$REQUEST_URI = preg_replace("/?(.*)/uis","",$_SERVER['REQUEST_URI']);
// результат:
// /tmp/t.php


Если надо из урлы выкинуть одну переменную, то регулярка будет такая:
// выкинем переменную clear_cache
$REQUEST_URI = preg_replace("/(?|&)clear_cache=([^&])/uis","$1v",$_SERVER['REQUEST_URI']);
// результат:
// /tmp/t.php?v&a=1
// выкинем переменную a
$REQUEST_URI = preg_replace("/(?|&)a=([^&])/uis","$1v",$_SERVER['REQUEST_URI']);
// результат:
// /tmp/t.php?clear_cache=Y&v


Если надо выкинуть несколько переменных, то регулярку можно модифицировать в такой вид:
// вырежем из адресной строки переменные a и b
$REQUEST_URI = preg_replace("/(?|&)(a|b)=([^&])/uis","$1v",$_SERVER['REQUEST_URI']);

В этих примерах добавлен не сильно умный хак — левая переменная v, такое решение самое простое, чтобы не проверять на каком месте переменная в адресной строке — на первом или нет.

В зависимости от задачи можно использовать любые регулярки и вырезать из адресной строки либо все переменные, либо конкретные.


перейти в Блог | Блог (стр. 3)

Ударим лайками по бездорожью, разгильдяйству и бюрократизму!


Ключевые слова (тэги): PHP 46  web-программирование 70  регулярные выражения 6  

Вам есть что сказать — ну я же чую.
Высказаться о наболевшем, я выслушаю:
Имя


email (не публикуется)