Привет люди 🙂 Я пытаюсь использовать strpos (), чтобы найти целые слова в предложении. Но на данный момент он также находит слово, если оно просто является частью другого слова. Например:
$mystring = "It's a beautiful morning today!"; $findme = "a"; $pos = strpos($mystring, $findme);
В этом примере он найдет «а» в слове «а» (как и должно быть), но также и в «прекрасном», потому что в нем есть а.
Как я могу найти только целые слова, а не если это часть других слов?
Используйте регулярное выражение с разделителем границ слова \b
, например:
$mystring = "It's a beautiful morning today!"; preg_match_all('/\ba\b/', $mystring, $matches, PREG_OFFSET_CAPTURE); var_dump($matches);
возвращается
array(1) { [0]=> array(1) { [0]=> array(2) { [0]=> string(1) "a" [1]=> int(5) } } }
Это задание для регулярного выражения:
$regex = '/\b'.$word.'\b/';
По сути, он находит буквы, окруженные границей слов (бит \b
). Итак, чтобы найти позицию:
preg_match($regex, $string, $match, PREG_OFFSET_CAPTURE); $pos = $match[0][1];
regex трудно для новичков, по-другому, и я признаю, что это не самое лучшее, было бы использовать
$ findme = "a"