在另一个多字节字符串中搜索一个多字节字符串

时间:2010-12-13 13:38:29

标签: php multibyte

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

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

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

3 个答案:

答案 0 :(得分:3)

为什么不使用mb_stripos

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

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

即:使用......

if (mb_stripos($string1, $string2) !== false) {
    // $string2 was found within $string1
    ...
}

答案 1 :(得分:1)

如果您没有使用子字符串,请不要使用strstr(或其派生词)。你关心的只是字符串存在,所以使用mb_stripos

if (mb_stripos($string1, $string2) !== false) {

答案 2 :(得分:0)

if (mb_stristr($string1, $string2) !== false) echo "found $string2 in $string2";

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