使用strpos()查找整个单词

时间:2011-02-02 20:57:25

标签: php strpos

你好人:) 我正在尝试使用strpos()来查找句子中的整个单词。但此刻,如果它只是另一个词的一部分,它也会找到这个词。例如:

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

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

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

我怎样才能找到整个单词而不是其他单词的一部分?

3 个答案:

答案 0 :(得分:9)

这是正则表达式的工作:

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

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

preg_match($regex, $string, $match, PREG_OFFSET_CAPTURE);
$pos = $match[0][1];

答案 1 :(得分: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)
    }
  }
}

答案 2 :(得分:-1)

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