我使用此代码在另一个 utf-8 字符串中搜索一个 utf-8 字符串:
if (strlen(mb_stristr($string1, $string2)) > 0)
但它总是返回 0!有谁知道这个问题的更好解决方案?两个字符串都可能是 unicode 和非 unicode 字符的某种组合!
为什么不直接使用mb_stripos?
如果您不知道源编码,您可能需要使用mb_detect_encoding和随后的mb_convert_encoding将每个字符串转换为通用编码,但这应该相当简单。
也就是说,如果 string2 出现在 string1 的开头(即:位置零),则需要检查是否为 false。)
即:使用...
if (mb_stripos($string1, $string2) !== false) {
// $string2 was found within $string1
...
}
如果您不使用子字符串,请不要使用strstr
(或其派生词)。您只关心字符串是否存在,因此请使用mb_stripos
:
if (mb_stripos($string1, $string2) !== false) {
if (mb_stristr($string1, $string2) !== false) echo "found $string2 in $string2";
注意类型安全的比较运算符!==
。