2011-02-02 44 views
2

你好人:) 我试图用strpos()在句子中查找整个单词。但目前,如果它只是另一个词的一部分,它也会发现该词。例如:用strpos查找整个单词()

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

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

在这个例子中,将发现“了”字“一”(因为它应该做的),而且在“美丽”,因为在它的一个。

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

+0

我们是否需要使用strpos? – Leigh 2011-02-02 21:01:27

+0

有没有比使用strpos()更好的方法来做到这一点,那么为什么限制呢? – 2011-02-02 21:04:58

回答

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) 
    } 
    } 
} 
9

这是正则表达式工作:

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

基本上,它是通过寻找一个字边界(在\b位)包围的字母。所以,要找到位置:

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

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

+0

我发现了!如果我只是在这个词上留下空间,它就完成了这项工作。谢谢你的时间! ;) – 2011-02-02 21:18:13