1

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

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

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

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

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

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

4

4 回答 4

6

strpos从 0 开始计数,如果没有找到则返回 false。你需要===像这样检查它是否是假的......

if (strpos($ids, '#222#') === false) // not found

或者!==,如果您想要相反的测试,请使用...

if (strpos($ids, '#222#') !== false) // found

有关更多信息,请参阅PHP 手册条目

于 2013-04-11T13:07:33.353 回答
1

使用 strpos 时,您没有明确测试 FALSE。像这样使用它:

if(strpos($string, '#222#') !== FALSE) {
    // found
} else {
    // not found
}

说明:您正在这样使用它:

if(strpos($string, '#222#')) {
    // found
}

这有什么问题?答案:strpos()将返回在字符串中找到子字符串的位置。在您的情况下0,它位于字符串的开头。但是除非您使用 or0发出明确的检查,否则 PHP 会将其视为错误。===!==

于 2013-04-11T13:07:43.683 回答
0

它按预期工作。strpos()返回 0,因为您要搜索的字符串位于单词的开头。您需要进行相等搜索:

更新您的if()声明如下:

if(strpos($ids, '#222') !== false)
{
    // string was found!
}
于 2013-04-11T13:07:39.707 回答
0

试试这个:

$ids="#222#,#333#,#555#";
if(strpos($ids,"#222#") !== false)
{
    echo "found";
}

你应该使用 !==,因为位置'#222#'0th (first)字符。

于 2013-04-11T13:09:30.133 回答