strpos 函数不适用于特殊字符

strpos function not working with special character

我想检查字符串是否不包含单词“★ StatTrak™”。但是当我包含★字符时它不能正常工作。没有“★”和“™”也能正常工作。

我在检查之前尝试使用 mb_strposurldecode

$name_to_check = '★ StatTrak™';

if(!strpos($name_to_check,'★ StatTrak™') !== false){
   echo 'not contain';
}else{
   echo 'contain';
}

是多字节字符,strpos无法理解。

您要找的是mb_strpos。此函数执行相同的操作,但多字节字符是安全的。


更新: 虽然上面的答案是正确的,但这并不是您案例的完整解决方案。问题是你让 if 检查太复杂了。

您首先反转 strpos 的结果,然后检查它是否不匹配 false。我不认为这是你的意图。 要解决此问题,只需检查 mb_strpos 的结果是否等于 false。

if (mb_strpos($name_to_check, '★ StatTrak™') === false)
    echo 'not contain';
} else {
    echo 'contain';
}