Разбор массива строковых команд мне нужно знать, содержит ли строка определенное ключевое слово.
Звучит просто, я знаю, но проблема возникает, когда ключевое слово команды также может быть частью другого слова.
Пример:
CHECKSOUND SOUND CHECK
Поэтому мне нужно проверить, есть ли в текущей строке команда CHECKSOUND, SOUND или CHECK.
Если я использую что-то вроде:
if(stristr($line,'SOUND') == true)
Затем он может найти CHECKSOUND
перед SOUND
и, следовательно, не разобрать правильно.
Вопрос :
Есть ли способ найти только появление целого слова, такого как SOUND, и игнорировать появление SOUND, если оно будет найдено как часть другого слова, такого как CHECKSOUND?
Я уверен, что мне не хватает чего-то простого здесь.
Вы можете использовать регулярное выражение, чтобы легко достичь цели.
Пример № 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
, который делает поиск «веб-регистр» нечувствительным.