【问题标题】:strpos not working properlystrpos 无法正常工作
【发布时间】:2016-07-07 03:27:35
【问题描述】:

我正在制作一个网站,我们需要做的一件事是吸引用户的兴趣,向他们展示最好的内容。用户的兴趣存储在“兴趣”字段中的“用户”表中。

现在,文章被标记了不同的兴趣,并且显示了与用户兴趣相匹配的文章。文章保存在标记表中。所以我们得到所有文章的标签,然后选择用户的兴趣。如果在文章中找到兴趣,则代码回显 true,否则回显 false。

$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 看起来像这样。

【问题讨论】:

  • strpos() 是否返回 true ?仔细阅读手册。
  • 它不返回true。但它确实返回false..Nd如果我反转它..我会得到true.不是那样的吗?
  • Strpos 返回字符串匹配的从通常为 0 的起始位置开始的字符数。使用 $pos!==false 等价于 $pos not 0... 表示未找到。

标签: php sql arrays string


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    使用stripos()

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

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

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

    如果条件应该是这样的

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      • 2016-09-01
      • 2012-07-11
      • 2018-04-08
      • 2017-04-20
      • 2018-10-02
      • 2016-09-04
      相关资源
      最近更新 更多