2011-02-02 60 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