2017-02-07 81 views
1

代碼:

<?php 
$str1 = "subidubidu"; 
$str2 = "subi"; 

if(strpos($str1,$str2)){ 
echo "Contains!"; 
}else{ 
echo "Not contains!"; 
} 
?> 

結果是 「不包含」,和我很好奇到底爲什麼? 可能是問題,「subi」在[0]的索引處,並且0返回false?任何想法?

+0

你讀過[文檔](http://php.net/manual/en/function.strpos。 PHP)? –

回答

1

你的代碼是正確的。但問題就在這裏:

說明:

strpos函數返回一個包含字符串的索引。在你的情況下,它返回作爲字符串的索引。 0表示編程中的錯誤。這就是爲什麼你的代碼執行其他部分。

如果您的字符串位於1或2等位置,那麼代碼將正常工作。但是這將是錯誤的,因爲匹配字符串在第零位。

對於未來的前景,你必須把價值在這樣一個變量:

$str1 = "subidubidu"; 
$str2 = "subi";  
$pos = strpos($str1, $str2); 

if ($pos != '' || $pos !== false) { 
    echo 'Found it'; 
} else { 
    echo 'Not found.'; 
} 
2
<?php 

$str1 = "subidubidu"; 
$str2 = "subi"; 

if (strpos($str1, $str2)!==false) { 
    echo "Contains!"; 
} else { 
    echo "Not contains!"; 
} 

您正在尋找這樣---一旦發現,如果沒有

+0

謝謝我知道如何解決它,我只是想知道它背後的邏輯。 :) – JustMatthew

3

我希望它能幫助

$str1 = "subidubidu"; 
$str2 = "subi";  

if (strpos($str1, $str2) !== FALSE) 
    { 
    echo 'Found it'; 
    } 
    else 
    { 
    echo 'Not found.'; 
    } 
0

如果你看一看的documentation假strpos返回的位置:

請注意我們使用===。簡單==不會像預期的那樣工作 ,因爲'a'的位置是第0個(第一個)字符。

它說,你不能只用==比較這是你在做什麼,當你鍵入

if (strpost($str1, $str2)) { .. } 

您需要使用===。所以它看起來像:

<?php 

$str1 = "subidubidu"; 
$str2 = "subi"; 

if (strpos($str1, $str2)!==false) { 
    echo "Contains!"; 
} else { 
    echo "Not contains!"; 
} 
相關問題