STRPOS用法
strpos(string,find,start)
我們看看strpos的一段代碼:
//ajax擷取分詞
public function get_segment_words() {
$title = I('title');
$content = I('content');
$Segment = M('Segment');
$Segment_content = M('Segment_content');
$segment_array = $Segment->getField('id,word');
$setment_words = array();
foreach ($segment_array as $id => $word) {
if (false !== strpos($content, $word) || false !== strpos($title, $word)) {
$segment_words[] = $word;
}
}
$segment_words = array_unique($segment_words);
$segment_words = implode(',', $segment_words);
echo $segment_words;exit; //ajax擷取填充
}
注意這句代碼:
if (false !== strpos($content, $word) || false !== strpos($title, $word)) {
//TODO
}
如果匹配失敗,strpos會返回bool類型的false,這個一定要注意。不然會出現什麼情況呢?假如你要匹配的字元正好在第一個位置,對於strpos這個函數來說返回的是0,也就是位置0.這個時候實際上是匹配到了,結果返回0,如果這樣判斷就錯了:
if (!strpos($content, $word))
舉個例子:
內容:購物袋範德薩法拉點撒範德薩。
匹配:購物
如果要找內容裡面是否有“購物”兩個字,strpos會返回0,表示存在“購物”兩個字,位置是0.
因此要用false!=strpos($find,$content)來判斷匹配是否成功。