strpos问题0 == false?

时间:2010-11-16 07:35:50

标签: php

我正在使用strpos在另一个字符串中查找字符串的位置。我首先检查那里是否找到了字符串。这是我的专栏:

if (strpos($grafik['data'],$ss1)<>false && strpos($grafik['data'],$ss2)<>false && strpos($grafik['data'],$ss1) < strpos($grafik['data'],$ss2))

我检查两个字符串是否都包含在内,然后我希望第一个字符串放在第二个字符串之前。在php手册中,它表示当找不到字符串时strpos返回false。但是,如果我的字符串从零位开始(strpos从开始就返回0),它似乎就是这个语句

strpos($grafik['data'],$ss1)<>false

是假的。莫名其妙0 ==假?当strpos返回0时,如何使语句成立?

3 个答案:

答案 0 :(得分:17)

来自http://www.php.net/manual/en/function.strpos.php

  

警告

     

此函数可能返回布尔值   FALSE,但也可能返回   非布尔值,其值为   FALSE,例如0或“”。请阅读   关于Booleans的部分了解更多信息   信息。使用the === operator   测试这个的返回值   功能

您必须使用===运算符代替==

在您的情况下,请使用<>

,而不是使用!==
strpos($grafik['data'], $ss1) !== false

如果在$ss1

中找到$grafik['data'],则返回TRUE

答案 1 :(得分:5)

你需要检查===。这将确保您具有完全错误而不是0。

答案 2 :(得分:3)

此函数表现不可预测,因此确保它具有确定性行为使用

if(strpos($text,$string)===false)

或使用变量

测试它

$pos=strpos($text,$string); if($pos===false)