<?php
$mystring = 'Gazole,';
$findme = 'Sans Plomb 95';
$pos = strpos($mystring, $findme);
if ($pos >= 0) {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
} else {
echo "The string '$findme' was not found in the string '$mystring'";
}
?>
但是,它始终执行此分支:
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
虽然我正在搜索的字符串不存在。
请提前帮助:))
答案 0 :(得分:14)
正确的做法是:
if ($pos !== false) {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
} else {
echo "The string '$findme' was not found in the string '$mystring'";
}
请参阅文档中的giant red warning。
答案 1 :(得分:3)
strpos
将返回布尔值false
。您的测试应该是$pos !== false
而不是$pos >= 0
。
请注意,标准比较运算符不考虑操作数的类型,因此false
被强制转换为0
。仅当操作数的类型和值匹配时,===
和!==
运算符才会生成true
。
答案 2 :(得分:1)
请参阅manual page
上的警告您还需要检查是否$pos !== false
答案 3 :(得分:1)
strpos()将返回FALSE。 当您检查$ pos&gt; = 0时,您正在接受FALSE值。
试试这个:
<?php
$mystring = 'Gazole,';
$findme = 'Sans Plomb 95';
$pos = strpos($mystring, $findme);
if ($pos !== false) {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
} else {
echo "The string '$findme' was not found in the string '$mystring'";
}
?>
答案 4 :(得分:1)
你好php中的malek strpos方法会在找不到字符串时返回值为false的布尔值,如果找到它将返回int中的位置。
答案 5 :(得分:0)
if (strpos($mystring, $findme) !== false) {
echo 'true';
}
答案 6 :(得分:0)
完全不同的方法而无需担心索引:
if (str_replace($strToSearchFor, '', $strToSearchIn) <> $strToSearchIn) {
//strToSearchFor is found inside strToSearchIn
您正在做的是替换子字符串的所有出现,并检查结果是否与原始字符串相同。