代碼:
<?php
$str1 = "subidubidu";
$str2 = "subi";
if(strpos($str1,$str2)){
echo "Contains!";
}else{
echo "Not contains!";
}
?>
結果是 「不包含」,和我很好奇到底爲什麼? 可能是問題,「subi」在[0]的索引處,並且0返回false?任何想法?
代碼:
<?php
$str1 = "subidubidu";
$str2 = "subi";
if(strpos($str1,$str2)){
echo "Contains!";
}else{
echo "Not contains!";
}
?>
結果是 「不包含」,和我很好奇到底爲什麼? 可能是問題,「subi」在[0]的索引處,並且0返回false?任何想法?
你的代碼是正確的。但問題就在這裏:
說明:
strpos
函數返回一個包含字符串的索引。在你的情況下,它返回作爲字符串的索引。 0表示編程中的錯誤。這就是爲什麼你的代碼執行其他部分。
如果您的字符串位於1或2等位置,那麼代碼將正常工作。但是這將是錯誤的,因爲匹配字符串在第零位。
對於未來的前景,你必須把價值在這樣一個變量:
$str1 = "subidubidu";
$str2 = "subi";
$pos = strpos($str1, $str2);
if ($pos != '' || $pos !== false) {
echo 'Found it';
} else {
echo 'Not found.';
}
<?php
$str1 = "subidubidu";
$str2 = "subi";
if (strpos($str1, $str2)!==false) {
echo "Contains!";
} else {
echo "Not contains!";
}
您正在尋找這樣---一旦發現,如果沒有
謝謝我知道如何解決它,我只是想知道它背後的邏輯。 :) – JustMatthew
我希望它能幫助
$str1 = "subidubidu";
$str2 = "subi";
if (strpos($str1, $str2) !== FALSE)
{
echo 'Found it';
}
else
{
echo 'Not found.';
}
如果你看一看的documentation假strpos返回的位置:
請注意我們使用===。簡單==不會像預期的那樣工作 ,因爲'a'的位置是第0個(第一個)字符。
它說,你不能只用==
比較這是你在做什麼,當你鍵入
if (strpost($str1, $str2)) { .. }
您需要使用===
。所以它看起來像:
<?php
$str1 = "subidubidu";
$str2 = "subi";
if (strpos($str1, $str2)!==false) {
echo "Contains!";
} else {
echo "Not contains!";
}
你讀過[文檔](http://php.net/manual/en/function.strpos。 PHP)? –