strpos 无法正常工作
Posted
技术标签:
【中文标题】strpos 无法正常工作【英文标题】:strpos not working properly 【发布时间】: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... 表示未找到。
【参考方案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
..............
【讨论】:
以上是关于strpos 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
mongoose 中的 UpdateMany 无法正常工作,但直接在 mongodb 中可以正常工作