我使用此代码在另一个utf-8字符串中搜索一个utf-8字符串:
if (strlen(mb_stristr($string1, $string2)) > 0)
但它总是返回0!有谁知道这个问题的更好的解决方案?两个字符串可能是unicode和unicode characteres的某种组合!
答案 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";
请注意类型安全比较运算符!==
。