2016-11-24 7 views
2

Прег_мачту ниже соответствует 'empty' (0 символов) против подстановочного знака. Я хочу, чтобы отключить, что:preg_match подстановочный знак, требуется хотя бы один символ

preg_match('/site.com\/subsection\/.*?/', $page_url); 

Так выше вещь должна соответствовать site.com/subsection/subpage, но не должны совпадать с корневым каталогом site.com/subsection/

Как я могу настроить regex выше? Заранее спасибо!

+2

TRY ' '/site\.com\/subsection \ /.+/'' –

ответ

4

.*? в конце шаблона соответствует пустой строке. Вы должны сделать его заменяющий один или несколько символов с помощью .+:

'/site\.com\/subsection\/.+/' 
         ^

Теперь, требуется, по крайней мере, 1 символ после site.com/subsection/.

Обратите внимание, что точка должна быть экранирована в соответствии с буквальной точкой.

Кроме того, это может быть хорошей идеей использовать другие / регулярные выражения разделителей (как OcuS предлагает в приведенном ниже comments), если у вас есть много слэша в самом шаблоне. Я обычно использую тильды:

'~site\.com/subsection/.+~' 
+0

Спасибо, что, кажется, работает! Примите ваш ответ, когда это разрешено. – dirk

+1

И сохраните несколько символов, выбирая другой разделитель вместо '/'. Что-то вроде '@site \ .com/subsection /[email protected]'. Он также добавляет больше читаемости IMHO. – OcuS