2016-07-07 74 views
0

我正在制作一个网站,我们需要的一件事就是让用户的兴趣向他们展示最佳内容。用户的兴趣存储在“兴趣”字段的“用户”表中。strpos无法正常工作

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

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

+1

是否'strpos()''回报TRUE'?仔细阅读手册。 – Raptor

+0

它不会返回true.But它会返回false.Nd,如果我将其逆转。我将变为true。不是那样吗? –

+1

Strpos返回字符串匹配的起始位置通常为0的字符数。使用$ pos!== false相当于$ pos not 0 ...意思找不到。 –

回答

2

函数strpos返回针相对于干草堆串开始处的位置。否则,FALSE如果针没有被发现:

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

使用stripos()

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

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

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

,如果条件应该是这样的

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