PHP strpos - найти в стоге сена «изобретение», а не «изобретение»? [дубликат]

Как мне использовать strpos(), чтобы найти иголку вроде invent в стоге сена, не вернувшись invention или inventory? Пример стога сена:

«Список удивительных изобретений на симпозиуме Invent America был ошеломляющим».

Образец кода

Вот пример блока кода:

      <?php

$haystack = strtolower("The inventory of amazing inventions at the Invent America Symposium was mind-boggling.");
$needle = "invent";

$str_found = strpos($haystack, $needle);

if (false !== $str_found ) {
    echo "Found $needle at position $str_found!";
}

// Found invent at position 4! --> Wrong!
?>

Другие примеры того, что кажется довольно распространенным сценарием ( хотя я не нашел учебника, в котором он обсуждается ), с которым можно столкнуться:

  • «есть», но не «площадь»
  • «кот», но не «категория»

Хорошо задокументировано, почему вы должны использовать !== или ===для сравнения типов и значений с помощью strpos(). Я не об этом спрашиваю здесь.

Но, похоже, я не могу найти ничего, что документировало бы, как справиться с ситуацией, которую я описываю. Возможно, наиболее вероятно, потому что у него есть какое-то причудливое название жаргона, о котором я не знаю, и единственная строка поиска для Google, которую я мог придумать, всегда приводит меня ко всем результатам, имеющим некоторую версию «Найти подстроку в строке с помощью strpos». На данный момент моя единственная надежда - переполнение стека.

Мой вопрос

Итак, то, что я хотел бы узнать здесь от образованных и опытных PHP-кодеров: каков технический термин для этого сценария с ошибками и каковы лучшие практики / шаблоны, рекомендуемые для работы с ним.

0 ответов

Другие вопросы по тегам