Простой вопрос регулярных выражений (PHP) - PullRequest
0 голосов
/ 03 декабря 2010

Я использовал эту строку в файле маршрутов:

$route['^(?!home|members).*'] = "pages/view/$0";

Строка в массиве слева от выражения (^(?!home|members).*) - это то, что я 'Я пытаюсь выяснить.

В основном любой URL, который не является:

/home или /home/, или /members, или /members/, должен быть истинным.У меня проблема, если URL-адрес что-то вроде /home-asdf.Это считается в моем списке исключенных URL (который в моем примере имеет только «home» и «members».

Идеи о том, как это исправить?

Ответы [ 3 ]

1 голос
/ 03 декабря 2010

Попробуйте эту модификацию:

^(?!(home|members)([/?]|$)).*

Отфильтровывает URL-адреса, начинающиеся с home или members, только если за этими именами сразу следует косая черта, знак вопроса ([/?]) или конец строки ($).

0 голосов
/ 03 декабря 2010

Кроме того, я использую это все время, и оно творит чудеса: http://www.rubular.com/ Это преимущественно для ruby, но хорошо работает при разработке общего регулярного выражения для php и т. Д.

0 голосов
/ 03 декабря 2010

http://www.regular -expressions.info /

Оператор точки . соответствует всем символам.Оператор * означает, что предыдущий паттерн будет повторяться 0 или более раз.Это означает, что конец вашего маршрута соответствует любому символу любое количество раз после слова home или members.Если вы хотите сопоставить только одну или нулевую косую черту, измените .* на /?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...