如题,用自己的想法尝试过,匹配不到$Str = 'Players';
$CotentCate = 'UserOS|UserIP|UserLang|UserLocation|Players|JavaVersion|MCVersion|ServerCore|ServerSystem';
$content = trim($Str);
$CotentArr = explode("|", $CotentCate); for ($i = 0; $i < count($CotentArr); $i++) { if ($CotentArr[$i] == "") { continue;
} if (strpos($content, trim($CotentArr[$i])) != false) { die('true');
}
} die('false');目标返回 true实际返回 false
1 回答
慕的地8271018
TA贡献1796条经验 获得超4个赞
我觉得 雪之祈舞 的方法很好
不过对于你的代码,为什么匹配不到,我想原因在这里:
if (strpos($content, trim($CotentArr[$i])) != false)
这句判断有问题,!=
应该换成 !==
因为strpos
函数用于查找字符串,如果查找到了则返回字符串出现的位置,当 CotentArr[$i]
的值是 Players
时,它在 $content
中出现的位置为0
,经过 !=
判断不会出现你期待的结果(!= 类型转换,出现的位置为0,则为false)
题外话:
不建议你在 for(表达式1;表达式2;表达式3)
中的 表达式2 中使用count
函数,因为这3个表达式执行的顺序是:表达式1 -> 表达式2 -> 表达式3 -> 表达式2 -> 表达式3 -> 表达式2....
你使用的count函数会进行多次计算数组中的元素个数...,当然,PHP是很快的,你也可以不在乎
- 1 回答
- 0 关注
- 637 浏览
添加回答
举报
0/150
提交
取消