松散地检查 strpos() 的返回值会产生意想不到的结果
我使用 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
!当 strpos()
返回 0
时,如何生成语句 true
?
I'm using strpos()
to find the position of a string in another string. I first check if the string is found at all in there. Here's my line:
if (
strpos($grafik['data'], $ss1) <> false
&& strpos($grafik['data'], $ss2) <> false
&& strpos($grafik['data'], $ss1) < strpos($grafik['data'],$ss2)
)
I check if both strings are contained and then I want the first one to be placed before the second one. In the PHP manual it says that strpos()
returns false when string is not found. However if my string starts at the zero position (strpos()
returns 0 since its the beginning), it seems like this statement
strpos($grafik['data'], $ss1) <> false
is false. Somehow 0
is equal to false
! How do I make the statement true
when strpos()
returns 0
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
来自 http://www.php.net/manual/en/function.strpos。 php:
您必须使用
===
运算符而不是==
。在您的情况下,不要使用
<>
,而是使用!==
:如果在
$ss1
中找到,这将返回 TRUE >$grafik['数据']From http://www.php.net/manual/en/function.strpos.php:
You have to use the
===
operator instead of==
.In your case, instead of using
<>
, use!==
:This will return TRUE if
$ss1
is found in$grafik['data']
您需要检查===。这将确保你得到的是精确的 false 而不是 0。
You need to check with ===. This will make sure you have exact false and not 0.
该函数的行为不可预测,因此为了确保它具有确定性行为,请使用
或者使用变量
$pos=strpos($text,$string); 测试它。
if($pos===假)
This function behaves unpredictably, so to be sure it'll have deterministic behavior use either
or test it using a variable
$pos=strpos($text,$string);
if($pos===false)