[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите дооформить регулярку
RCuPeR
preg_match('#\/([a-zA-Z0-9-]+)\/#', $_SERVER['HTTP_REFERER'], $match);

Данное регулярное выражение получает "Roman" из URL-a вида http://site.ru/Roman/ .

Проблема в том, что она не вырезает "Roman" из URL-а типа http://site.ru/Roman/param1/param2/ и т.д. Как сие вылечить ?



Спустя 10 минут, 56 секунд (12.03.2012 - 14:08) Visman написал(а):
<?php


preg_match('#\/([a-zA-Z0-9-]+)\/#', 'http://site.ru/Roman/param1/param2/', $match);

print_r($match);
?>


результат
Array
(
[0] => /Roman/
[1] => Roman
)

Спустя 12 минут, 42 секунды (12.03.2012 - 14:20) Winston написал(а):
preg_match('#/([a-z\d-]+)/#i', 'http://site.ru/Roman/param1/param2/', $match);
print_r($match);

Array ( [0] => /Roman/ [1] => Roman )

Спустя 59 минут, 54 секунды (12.03.2012 - 15:20) RCuPeR написал(а):
Всем спасибо smile.gif

Судя по регулярке Winston-а в конец просто нужно добавить модификатор "i" ?

А еще: [a-z\d-] соответствует [a-zA-Z0-9-] ?

Спустя 4 минуты, 36 секунд (12.03.2012 - 15:25) Winston написал(а):
Цитата (RCuPeR @ 12.03.2012 - 14:20)
А еще: [a-z\d-] соответствует [a-zA-Z0-9-] ?

Да, только если есть мод. i
А мод. i значит игнорирования регистра.
PS: Твоя регулярка у меня кстати тоже нормально отработала и вернула что нужно

Спустя 35 минут, 37 секунд (12.03.2012 - 16:00) RCuPeR написал(а):
Кстати, не хочет работать(

if(substr($_SERVER['HTTP_REFERER'], (strlen($_SERVER['HTTP_REFERER']) - 1) ) == '/')
preg_match('#\/([a-z\d-]+)\/#i', $_SERVER['HTTP_REFERER'], $match);
else
preg_match('#\/([a-z\d-]+)$#i', $_SERVER['HTTP_REFERER'], $match);


URL: http://site.ru/Roman/dossier/full

Возвращает:
Array
(
[0] => /full
[1] => full
)



Спустя 10 минут, 39 секунд (12.03.2012 - 16:11) Winston написал(а):
У меня все нормально работает. Покажи что у тебя в реферере находится

Спустя 11 минут, 25 секунд (12.03.2012 - 16:22) RCuPeR написал(а):
Winston, заметил, что не работает, если в конце нету слеша.
Т.е '#\/([a-z\d-]+)$#i' такая регулярка не срабатывает и возвращает то, что после первого параметра.

Спустя 35 секунд (12.03.2012 - 16:23) RCuPeR написал(а):
Может их как-то можно унифицировать, что бы они слеш не учитывали ?

Спустя 5 минут, 35 секунд (12.03.2012 - 16:29) Winston написал(а):
preg_match('#(?<!/)/([a-z\d-]+)/?#i', 'http://site.ru/Roman/', $match); 

Из http://site.ru/Roman/ => Roman
http://site.ru/Roman => Roman
http://site.ru/Roman/dossier/full => Roman
http://site.ru/Roman/param1/param2/ => Roman

Что то не так?

Спустя 6 минут, 49 секунд (12.03.2012 - 16:35) RCuPeR написал(а):
То, что нужно ! rolleyes.gif
Winston, еще раз спасибо.


_____________
Гнусный социопат с комплексом Бога.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.