Найти слово целиком с помощью strpos () - PullRequest
2 голосов
/ 02 февраля 2011

Привет, люди :) Я пытаюсь использовать strpos (), чтобы найти целые слова в предложении. Но в данный момент он также находит слово, если оно просто является частью другого слова. Например:

$mystring = "It's a beautiful morning today!";
$findme   = "a";

$pos = strpos($mystring, $findme);

В этом примере он нашел бы «a» в слове «a» (как и должно быть), но также и в «красивом», потому что в нем есть a.

Как я могу найти только целые слова, а не если это часть других слов?

Ответы [ 3 ]

9 голосов
/ 03 февраля 2011

Это задание для регулярных выражений:

$regex = '/\b'.$word.'\b/';

По сути, это поиск букв, окруженных границей слов (\b бит).Итак, чтобы найти позицию:

preg_match($regex, $string, $match, PREG_OFFSET_CAPTURE);
$pos = $match[0][1];
2 голосов
/ 03 февраля 2011

Используйте регулярное выражение с разделителем границ слова \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)
    }
  }
}
0 голосов
/ 03 февраля 2011

регулярное выражение трудно для новичков, другой способ, и я признаю, что это не лучший вариант, будет использовать
$ findme = "a"

...