2012-05-21 7 views
-2

мне нужно регулярное выражение строки для извлечения параметров из различных типов URL, например с помощью $_SERVER["REQUEST_URI"]:PHP Regex - Получение параметров строки запроса из переписанного URL

строка 1: «/ Новости/страницы/4» или строку 2: «/ новости/еженедельно/страница/4»

Мне нужно извлечь строку без последнего /page/[ID], я имею в виду только /news/page или /news/weekly/ и т.д. Как я могу сделать это с preg_replace?

спасибо.

+0

Каково ваше правило перезаписи? Параметры, вероятно, находятся в $ _GET – Jeroen

ответ

0

регулярное_выражение решение:

echo preg_replace('/^([\w\W]*)\/page\/\d*/','$1','/news/weekly/page/4'); 

выходы:

/news/weekly 

но вы должны использовать взрываются решение:

$parts = explode('/', $_SERVER["REQUEST_URI"]); 
$url = $parts[0].'/'.$parts[1]; 
+0

ОК, спасибо много :) Я использовал regexp-решение и работает хорошо, так как я могу получить с регулярным выражением [ID] из «/ news/page/[ID]» или «/ news/еженедельно/страница/[ID] "? :) –

+0

preg_match ('/ \/page \/(\ d +) /', '"/ news/page/134"', $ matches); –

+0

$ matches [1] будет вашим идентификатором –

2

Вы можете использовать explode() вместо регулярных выражений:

$delimiter = '/'; 
$parts  = explode($delimiter, $_SERVER["REQUEST_URI"]); 
$whatINeed = $parts[0] . $delimiter . $parts[1]; 
0

Вы должны быть в состоянии использовать: [A-Za-Z /] + Но это будет медленнее, чем только с помощью SUBSTR. EDIT: не субстрат, а взрыв.

0

Try:

$foo = explode('/', $_SERVER["REQUEST_URI"]); 
$resultant_url = $foo[0].'/'.$foo[1]; 
Смежные вопросы