Как найти целое слово в строке в PHP без случайных совпадений? - PullRequest
8 голосов
/ 01 декабря 2010

Анализируя массив строковых команд, мне нужно знать, содержит ли строка определенное ключевое слово.

Звучит просто, я знаю, но проблема возникает, когда ключевое слово command также может быть частью другого слова.

Ex:

CHECKSOUND
SOUND
CHECK

Поэтому мне нужно проверить, есть ли в текущей строке команда CHECKSOUND, SOUND или CHECK.

Если я использую что-то вроде:

if(stristr($line,'SOUND') == true)

Тогда он может найти CHECKSOUND до SOUND и, следовательно, не сможет правильно проанализировать.

Вопрос

Есть ли способ найти только вхождение целого слова, например SOUND, и игнорировать вхождение SOUND, если оно найдено как часть другого слова, такого как CHECKSOUND?

Я уверен, что мне здесь не хватает чего-то простого.

1 Ответ

22 голосов
/ 01 декабря 2010

Вы можете использовать регулярное выражение, чтобы легко достичь цели.

Пример № 2 из документации preg_match:

/* The \b in the pattern indicates a word boundary, so only the distinct
 * word "web" is matched, and not a word partial like "webbing" or "cobweb" */
 if (preg_match("/\bweb\b/i", "PHP is the web scripting language of choice.")) {
     echo "A match was found.";
 } else {
     echo "A match was not found.";
 }

Обратите внимание, что в приведенном выше примере используется модификатор i, который делает поиск "web" нечувствительным к регистру.

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