strpos() 函数返回字符串在另一个字符串中第一次出现的位置了,但是我们在按官方的手册来测试时发现一直返回false了,那么要如何来解决.
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)来判断匹配是否成功.
本文地址:
转载随意,但请附上文章地址:-)