搜索字符串时使用strpos没有成功

时间:2013-04-11 13:05:11

标签: php string strpos

我有以下代码/字符串: $ids="#222#,#333#,#555#";

当我使用以下方式搜索零件时:

if(strpos($ids,"#222#"))

它找不到它。但是当我在没有哈希的情况下进行搜索时,它可以使用:

if(strpos($ids,"222"))

我已经尝试将strval用于搜索参数,但这也不起作用。

4 个答案:

答案 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)字符。