3

大家好 :) 我正在尝试使用 strpos() 来查找句子中的整个单词。但目前,如果它只是另一个词的一部分,它也会找到该词。例如:

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

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

在这个例子中,它会在单词“a”中找到“a”(应该这样做),但也会在“beautiful”中找到“a”,因为其中有一个 a。

如果它是其他单词的一部分,我如何才能找到整个单词而不是?

4

3 回答 3

10

这是正则表达式的工作:

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

\b基本上,它找到了被单词边界(位)包围的字母。所以,要找到位置:

preg_match($regex, $string, $match, PREG_OFFSET_CAPTURE);
$pos = $match[0][1];
于 2011-02-02T21:03:49.603 回答
2

使用带有单词边界分隔符的正则表达式,\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)
    }
  }
}
于 2011-02-02T21:10:08.413 回答
0

正则表达式对初学者来说很难,另一种方式,我承认它不是最好的,那就是使用
$findme = " a "

于 2011-02-02T21:09:51.163 回答