PHP stristr与stripos

时间:2014-02-14 15:19:36

标签: php

我正在尝试修改我工作的应用程序中的一些旧代码。目前,该应用程序解析从API接收的部分响应字符串,以确定请求是好还是失败。如果请求处理成功,API的响应将发回包含字符“DP”的字符串。现在应用程序中有一行代码如下:

if(stripos($result, "DP") !== false)

现在工作正常,但我可以预见到这个问题。 stripos即使实际上在大海捞针内找到针头,也会返回“假”值。由于haystack字符串使用stripos进行零索引,如果在haystack字符串的最开头找到字符“DP”,该函数将返回0,这将被错误地读取为false。此代码现在正在运行,但如果由于任何原因维护我们工作的API的开发人员决定重新格式化他们的响应,我们将遇到问题。我正考虑将此更改为以下内容:

if(stristr($result, "DP") !== false)

据我所知,这应该没问题,因为根据php.net stristr,如果在haystack中发现,则只返回false。我很好奇,如果有人发现任何类似于上述stristr功能的问题。

3 个答案:

答案 0 :(得分:4)

如果您使用0(或false),则

===不等于!==

请参阅此小提琴以获取证据:http://phpfiddle.org/main/code/nih-esg

有关PHP网站的更多信息:http://www.php.net/manual/en/language.operators.comparison.php

答案 1 :(得分:0)

由于你的使用!==这是一个非问题,因为tripple运算符同时检查值和类型

false!= 0:false

false!== 0:true

答案 2 :(得分:0)

<?php
    $result="DP";
    if (stripos($result, "DP") !== false)
    {
      echo stripos($result, "DP"); 
    }
?>

从括号内返回0