2017-02-07 54 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!"; 
} 
相关问题