2013-05-15 66 views
1

我遇到了我寫的更長的func的問題,所以我把它分解了,它似乎與strpos()函數。strpos()返回false時,當針在乾草堆中

儘管指針顯然存在於乾草堆中,但它返回假,對於我的生活我無法解決爲什麼,奇怪的是,如果我改變針「sam」成爲真的..任何想法爲什麼?

function verify_url($url) { 
    if (strpos($url, "http://")) { 
     return $url; 
    } else { 
     echo "error"; 
    } 
} 


$url = "http://sam.com"; 

echo verify_url($url); 
+0

你應該使用''===代替''==在任何時間,除非非常非常罕見的情況。 '==='比'=='表現得更好,它永遠不會像'=='那樣給人混淆的轉換。 – mpyw

回答

5

它返回0而不是假。在if測試中,PHP將整數值0計算爲布爾值false。使用strpos($url, "http://") !== false檢查值和數據類型。這就是所謂的嚴格比較。

手冊:Comparison Operatorsstrpos()

1

將您的if (strpos($url, "http://"))替換爲下面的一個。

if (strpos($url, "http://") !== false) 

它給0(而不是false),因爲它發現http://0th位置