php中STRPOS查找失败返回的是FALSE注意事项

六月 29, 2019 | views
Comments 0

strpos() 函数返回字符串在另一个字符串中第一次出现的位置了,但是我们在按官方的手册来测试时发现一直返回false了,那么要如何来解决.

STRPOS用法:strpos(string,find,start)

我们看看strpos的一段代码:

  1. //ajax获取分词 
  2. public function get_segment_words() { 
  3.  $title = I('title'); 
  4.  $content = I('content'); 
  5.  $Segment = M('Segment'); 
  6.  $Segment_content = M('Segment_content'); 
  7.  $segment_array = $Segment->getField('id,word'); 
  8.  $setment_words = array(); 
  9.  foreach ($segment_array as $id => $word) { 
  10.   if (false !== strpos($content$word) || false !== strpos($title$word)) { 
  11.    $segment_words[] = $word
  12.   }  //开源软件:phpfensi.com 
  13.  } 
  14.  $segment_words = array_unique($segment_words); 
  15.  $segment_words = implode(','$segment_words); 
  16.  echo $segment_words;exit//ajax获取填充 
  17. 注意这句代码: 
  18. if (false !== strpos($content$word) || false !== strpos($title$word)) { 
  19. //TODO 

如果匹配失败,strpos会返回bool类型的false,这个一定要注意,不然会出现什么情况呢?假如你要匹配的字符正好在第一个位置,对于strpos这个函数来说返回的是0,也就是位置0.这个时候实际上是匹配到了,结果返回0,如果这样判断就错了:

if (!strpos($content, $word))

举个例子:

内容:购物袋范德萨法拉点撒范德萨。

匹配:购物

如果要找内容里面是否有“购物”两个字,strpos会返回0,表示存在“购物”两个字,位置是0,因此要用false!=strpos($find,$content)来判断匹配是否成功.



zend