如题,用自己的想法尝试过,匹配不到
$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
我觉得 雪之祈舞 的方法很好
不过对于你的代码,为什么匹配不到,我想原因在这里:
这句判断有问题,
!=
应该换成!==
因为
strpos
函数用于查找字符串,如果查找到了则返回字符串出现的位置,当CotentArr[$i]
的值是Players
时,它在$content
中出现的位置为0
,经过!=
判断不会出现你期待的结果(!= 类型转换,出现的位置为0,则为false)题外话:
不建议你在
for(表达式1;表达式2;表达式3)
中的 表达式2 中使用count
函数,因为这3个表达式执行的顺序是:表达式1 -> 表达式2 -> 表达式3 -> 表达式2 -> 表达式3 -> 表达式2....
你使用的count函数会进行多次计算数组中的元素个数...,当然,PHP是很快的,你也可以不在乎