我正在使用
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
等于false
!当 true
返回 strpos()
时,如何声明 0
?
来自 http://www.php.net/manual/en/function.strpos.php:
警告
该函数可能返回布尔值 FALSE,但也可能返回 非布尔值,其计算结果为 FALSE,例如 0 或“”。请阅读 Booleans 部分了解更多信息 信息。使用 === 运算符 测试这个的返回值 功能。
您必须使用
===
运算符而不是 ==
。
在您的情况下,不要使用
<>
,而是使用 !==
:
strpos($grafik['data'], $ss1) !== false
如果在
$ss1
中找到
$grafik['data']
,则返回 TRUE
您需要检查===。这将确保你得到的是精确的 false 而不是 0。
此函数的行为不可预测,因此要确保它具有确定性行为,请使用任一
if(strpos($text,$string)===false)
或使用变量进行测试
$pos=strpos($text,$string);
if($pos===false)