PHP preg_match - сопоставить ключевое слово, которое только само по себе?

0

Как я могу сопоставить ключевое слово, которое полностью само по себе?

Например, я хочу только совместить hello в такой строке,

/say/hello/world/
/say/hello/

но не в них,

/say/helloworld/
/say/hello-world/
/say/hello+world/
/say_hello_world/

До сих пор с этой моделью,

var_dump(preg_match('~.*?(?=hello)~i', $string)); // int 1

Он соответствует всем им!

Я хочу только /something/hello/world/ быть int 1 - возможно ли это?

Теги:
preg-match

2 ответа

2
Лучший ответ

Измените lookahead, чтобы включить косые черты:

~.*?(?=/hello/)~i

Код:

var_dump(preg_match('~.*?(?=/hello/)~i', $string));
  • 0
    Я получаю эту ошибку Warning: preg_match(): No ending delimiter '.' found in тогда не совпадает /say/hello/
  • 1
    @tealou: Я не включил разделитель в ответ. Вам нужно использовать ~.*?(?=/hello/)~i .
Показать ещё 2 комментария
1

Вы можете использовать это регулярное выражение с поисковыми окнами:

(?<=/)hello(?=/)

Демо-версия RegEx

Код:

if ( preg_match_all('~(?<=/)hello(?=/)~i', $string, $m) )
   print_r($m);
  • 0
    Я получаю эту ошибку Warning: preg_match(): Unknown modifier 'h' in.. тогда он не совпадает /say/hello/
  • 1
    Я также добавил код в ответ.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню