ホームページ > バックエンド開発 > PHPチュートリアル > コンテンツに中国語が含まれているかどうかを判断し、中国語の文字を返します。

コンテンツに中国語が含まれているかどうかを判断し、中国語の文字を返します。

WBOY
リリース: 2016-06-13 12:56:22
オリジナル
958 人が閲覧しました

コンテンツに中国語の文字が含まれているかどうかを判断し、中国語の文字を返します
まず、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 'はい';
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート