2014-02-14 48 views
0

我正在研究試圖修改我工作的應用程序中的一些舊代碼。目前,應用程序解析出從API接收到的響應字符串的一部分,以確定請求是好還是失敗。如果請求已成功處理,則API的響應會發送一個包含字符「DP」的字符串。現在有代碼的應用程序一條線,如下所示:PHP stristr與stripos

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

這是現在的工作很好,但我可以預見,從這個未來的問題。 stripos即使實際上在乾草堆內發現了針,也可能返回「虛假」值。由於乾草堆字符串爲零索引012xx如果在乾草堆字符串的最開始發現字符「DP」,則該函數將返回0,該字符串將錯誤地讀爲false。此代碼現在正在運行,但如果由於某種原因,維護我們所使用的API的開發人員決定重新格式化他們的響應,我們將遇到問題。我想這個變化的以下內容:

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

從我可以告訴,這應該是可以的,因爲如果針在草垛不發現根據php.net stristr只返回false。我很好奇,但是如果有人看到類似於上面描述的stristr函數發生的任何問題。

+0

根據此https://eval.in/101665 stripos with!==不會假設0是'false' – Chris

+0

可能的重複[哪種方法是首選的strstr或strpos?](http:// stackoverflow。 com/questions/5820586/which-method-is-preferred-strstr-or-strpos) – Alnitak

+0

'!=='不強制,這是_exactly_你應該如何使用'stripos'。另請參閱http://stackoverflow.com/questions/5820586/which-method-is-preferred-strstr-or-strpos/5820612#5820612 – Alnitak

回答

0

由於您使用==它是一個非問題,因爲tripple運營商同時檢查值和類型

虛假= 0:!假

虛假== 0:真

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

從括號內返回0