Регулярное выражение для проверки ЧПУ.

S
На сайте с 06.09.2011
Offline
16
2295

Добрый день.

Помогите составить условие preg_match в одну строку для проверки $_SERVER['REQUEST_URI'], которая выглядит так:

/dir-1/dir-2/dir-3/

Т.е. нужна проверка:

- Только английские буквы, цифры и символ "-"

- Строка должна начинаться и заканчиваться "/"

- Повтор повторяющихся "/" запрещен

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#1

preg_match('#(/([a-z0-9\-]*)/([a-z0-9\-]*)/([a-z0-9\-]*)/)#i', $_SERVER['REQUEST_URI'], $matches);

print_r($matches);

Подпись))
siv1987
На сайте с 02.04.2009
Offline
427
#2

preg_match( "#^(?:/[a-z0-9]+-\d+){3}/$#", $_SERVER['REQUEST_URI'], $out );

S
На сайте с 06.09.2011
Offline
16
#3

Да, прошу прощения, забыл упомянуть, что структура ЧПУ неограниченная, т.е. каталогов может быть N-штук.

Т.е.

/dir-1/dir-2/.../dir-n/
Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#4

preg_match(

"#^(?:/[a-z0-9]+-\d+){1,100500}/$#",

$_SERVER['REQUEST_URI'],

$out

);

SeVlad
На сайте с 03.11.2008
Offline
1609
#5
startup:
что структура ЧПУ неограниченная,

Она-таки ограничена ;)

И что бы не было иллюзий, что это не так работает - читаем топик. Внимательно.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
S
На сайте с 06.09.2011
Offline
16
#6

Всем спасибо, последний вопрос. Можно ли как-то совместить в одно эти два условия?


if(!preg_match('/^\/([a-z0-9-\/]+)\/$/', $string) or preg_match('/[\/]{2,}/', $string)){echo '-';}else{echo '+';}
VHS-1980
На сайте с 21.05.2010
Offline
91
#7

ТС, у меня такой вопрос - Вы пробовали открыть мануал по PHP на странице регулярных выражений и хотя бы через слово прочитать? Если составить выражение иногда сложно средней руки вебмастеру, то последний Ваш вопрос - просто халява.

siv1987
На сайте с 02.04.2009
Offline
427
#8
Всем спасибо, последний вопрос. Можно ли как-то совместить в одно эти два условия?

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий