strpos无法正常工作

时间:2016-07-07 03:27:35

标签: php sql arrays string

我正在建立一个网站,我们需要的一件事是让用户感兴趣,向他们展示最好的内容。用户的兴趣存储在一个表格'用户'在领域的兴趣'。

现在,文章被标记有不同的兴趣,并且显示了符合用户兴趣的文章。文章保存在标记表中。所以我们得到所有文章的标签,然后选择用户的兴趣。如果在文章中找到兴趣,那么代码回应为真,否则它会回复错误。

$select = "SELECT * from users where username='$username'";
$query = mysqli_query($dbc, $select) or die(mysqli_error($dbc));

while ($result = mysqli_fetch_array($query)) {
    $interests = explode(",",$result['interests'],40);
    foreach($interests as $interest) {

        $select1 = "SELECT * from tagged";
        $query1 = mysqli_query($dbc, $select1) or die(mysqli_error($dbc));
        while ($result1 = mysqli_fetch_array($query1)) {
            echo "Interests:".$interest."<br>";
            echo "Tags:".$result1['tags']."<br>";
            $pos = strpos($result1['tags'], $interest);
            if ($pos===true) {
                echo "Result:true<br>";
            } else {
                echo "Result:false<br>";
            }
        }
    }
}

兴趣列表实际上是以逗号分隔的,所以我将其解压缩并将其分解为数组,然后使用strpos()函数在文章标签中找到数组元素的位置。但所有结果都显示true,即使它们是false

The result看起来像这样。

2 个答案:

答案 0 :(得分:2)

函数strpos返回针存在于相对于haystack字符串开头的位置。否则,如果没有找到针,则为FALSE:

if ($pos!==false) {
    echo "Result:true<br>";
} else {
    echo "Result:false<br>";
}

答案 1 :(得分:0)

使用stripos()

stripos()函数查找第一次出现的字符串在另一个字符串中的位置。

返回第一次出现在另一个字符串中的字符串的位置,如果找不到该字符串,则返回FALSE。注意:字符串位置从0开始,而不是1。

注意:stripos()函数不区分大小写。

如果条件应该是这样的

    if ($pos!==false) {
        ..............
    } else {
        ..............
    }