0

我使用此代码在另一个 utf-8 字符串中搜索一个 utf-8 字符串:

if (strlen(mb_stristr($string1, $string2)) > 0)

但它总是返回 0!有谁知道这个问题的更好解决方案?两个字符串都可能是 unicode 和非 unicode 字符的某种组合!

4

3 回答 3

3

为什么不直接使用mb_stripos

如果您不知道源编码,您可能需要使用mb_detect_encoding和随后的mb_convert_encoding将每个字符串转换为通用编码,但这应该相当简单。

也就是说,如果 string2 出现在 string1 的开头(即:位置零),则需要检查是否为 false。)

即:使用...

if (mb_stripos($string1, $string2) !== false) {
    // $string2 was found within $string1
    ...
}
于 2010-12-13T13:43:30.510 回答
1

如果您不使用子字符串,请不要使用strstr(或其派生词)。您只关心字符串是否存在,因此请使用mb_stripos

if (mb_stripos($string1, $string2) !== false) {
于 2010-12-13T13:44:55.913 回答
0
if (mb_stristr($string1, $string2) !== false) echo "found $string2 in $string2";

注意类型安全的比较运算符!==

于 2010-12-13T13:43:04.940 回答