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-кодеров: каков технический термин для этого сценария с ошибками и каковы лучшие практики / шаблоны, рекомендуемые для работы с ним.