我有以下代码/字符串:
$ids="#222#,#333#,#555#";
当我使用以下方式搜索零件时:
if(strpos($ids,"#222#"))
它找不到它。但是当我在没有哈希的情况下进行搜索时,它可以使用:
if(strpos($ids,"222"))
我已经尝试将strval
用于搜索参数,但这也不起作用。
答案 0 :(得分:6)
strpos
从0开始计数,如果没有找到则返回false。您需要检查===
是否错误,这样......
if (strpos($ids, '#222#') === false) // not found
如果您想要相反的测试,请使用!==
...
if (strpos($ids, '#222#') !== false) // found
有关详细信息,请参阅PHP Manual entry
答案 1 :(得分:1)
使用strpos时,您没有明确地测试FALSE。像这样使用它:
if(strpos($string, '#222#') !== FALSE) {
// found
} else {
// not found
}
说明:您正在使用它:
if(strpos($string, '#222#')) {
// found
}
这有什么问题?答案:strpos()
将返回找到子字符串的字符串中的位置。在你的情况下0
作为它在字符串的开头。但是,0
将被PHP视为错误,除非您使用===
或!==
发出明确的检查。
答案 2 :(得分:0)
它按预期工作。 strpos()
返回0,因为您要搜索的字符串位于单词的开头。你需要进行平等搜索:
更新if()
声明,如下所示:
if(strpos($ids, '#222') !== false)
{
// string was found!
}
答案 3 :(得分:0)
试试这个:
$ids="#222#,#333#,#555#";
if(strpos($ids,"#222#") !== false)
{
echo "found";
}
您应该使用!==
因为'#222#'
的位置是0th (first)
字符。