注册 登录
编程论坛 PHP技术论坛

如何使用strpos正确地判断源串中含有子串?

redice 发布于 2009-09-30 11:01, 2054 次点击
请教各位大侠一个问题:

strpos(源串,子串);
返回子串在源串中首次出现的位置,位置索引从0开始,如果没有找到子串返回0。

上面的叙述应该没有问题吧?那么下面代码执行的结果怎么和我预期的不一样呢?

程序代码:
<?php
$str1="http://www. "原串是:" . $str1."<br>";

// 寻找子串123456
if(strpos($str1,"123456")==false)
  echo "没有找到123456,返回位置=".strpos($str1,"123456")."<br>";
else
  echo "找到了123456<br>";
 
// 寻找子串http
if(strpos($str1,"http")==false)
  echo "没有找到http,返回位置=".strpos($str1,"http")."<br>";
else
  echo "找到了http<br>";

//false是否等于0
if(false==0)
  echo "false=0<br>";
 
//""是否等于0
if(""==0)
  echo "NULL=0<br>";
?>



只有本站会员才能查看附件,请 登录
6 回复
#2
笨笨林2009-09-30 11:26
就用strstr吧,不会出现这种情况。
#3
外部三电铃2009-10-01 13:35
$str1="http://www.
if(strpos($str1,"http")==false)    //strpos($str1,"http")返回0,0会被当做false,用楼上说的strstr就不会出现这种问题了
  echo "没有找到http,返回位置=".strpos($str1,"http")."<br>";
#4
skyandlw2009-10-07 11:28
1,用strpos()函数时要用===来判断。
2,一个布尔值,你想让他显示出什么啊。
#5
PcrazyC2009-10-09 16:37
if(strpos($str1,"http")===false)
#6
yinhusihu2009-10-17 19:19
有3个等号的吗?
#7
外部三电铃2009-10-17 19:21
3个等号不光判断是不是相等,同时还判断是不是同一个类型
1