コンテンツに中国語の文字が含まれているかどうかを判断し、中国語の文字を返します
まず、preg_match_all('/[x80-xff]./', $s,$arr); を使用して中国語の文字が含まれているかどうかを検出します。 $arr を出力し、どのような漢字があるかを確認し、それに応じて修正しますが、出力された $arr はすべて文字化けしており、GB2312 を UTF-8 に変換するいくつかの方法は機能しません。
いくつかの方法を提供していただけますか。
-----解決策--------
1. UTF-8 は次のようになります。エンコード:
U+007F 0xxxxxxx
U+07FF 110xxxxx 10xxxxxx
U+FFFF 1110xxxx 10xxxxxx 10xxxxxx
U+1FFFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U+3FFFFFF 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
U+7FFFFFFF 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
2. このことから、中国語の正規表現ルール文字列は
であることがわかります。
/^(?:[x00-x7f]
-----解決策---------
[ xc0-xff][x80-xbf]+)+$/
3. このような機能はマニュアルに追加されます
関数 is_utf8($str) {
$c=0; $b=0;
$bits=0;
$len=strlen($str);
for($i=0; $i
$c=ord($str[$i]);
If($c > 128){
If(($c >= 254)) false を返します;
elseif($c >= 252) $bits=6;
elseif($c >= 248) $bits=5;
elseif($c >= 240) $bits=4;
elseif($c >= 224) $bits=3;
elseif($c >= 192) $bits=2;
それ以外の場合は false を返します;
If(($i+$bits) > $len) return false;
while($bits > 1){
$i++;
$b=ord($str[$i]);
if($b -----解決策---------
$b > ; 191) false を返します;
$bits--;
}
}
}
true を返します;
}
4. php5.3 以降、mb_string 拡張機能は mb_check_encoding 関数を提供します
if(mb_check_encoding($s, 'utf-8')) echo 'はい';