ホームページ >バックエンド開発 >PHPチュートリアル >テキストエンコーディングを自動で識別し、目的のエンコーディングに変換します。

テキストエンコーディングを自動で識別し、目的のエンコーディングに変換します。

WBOY
WBOYオリジナル
2016-07-25 09:06:491035ブラウズ

PHPがページを処理する際、iconvやmb_convertなどの関数を使って文字セットを変換しますが、これには実は前提があります。つまり、正しい変換を実行するには、入力および出力のエンコードが何であるかを事前に知っておく必要があります。

ほとんどの変換は gbk と utf-8 の間で行われますが、変換オブジェクトのエンコーディングがわからない場合はどうすればよいでしょうか? Google は、UTF8 と GBK のエンコーディングを簡単に識別できる関数safeEncoding を考案しました。この関数はある程度正確ですが、より複雑な環境で使用するのはそれほど簡単ではありません。以下では、GBK と UTF-8 エンコードの違いを組み合わせ、正規表現を使用して UTF-8 エンコードを決定し、mb_convert_encoding を使用します。中国では最も一般的なエンコーディングは GBK と UTF-8 であるため、この関数はこれら 2 つのエンコーディングを自動的に変換します。

  1. /**
  2. * ソースURL: http://www.xuehuwang.com/read-450.html
  3. * 著者: Xuehu Blog
  4. * @ string 変換するテキスト
  5. * @ encoding ターゲットエンコーディング
  6. **/
  7. function detect_encoding($string,$encoding = 'gbk'){
  8. $is_utf8 = preg_match('%^(?:[x09x0Ax0Dx20-x7E]| [xC2-xDF] [x80-xBF]| [xE1-xECxEExEF][x80-xBF]{2} | ]{3} | xF4[x80-x8F][x80-xBF]{2} )*$%xs', $string);
  9. if ($is_utf8 && $encoding == 'utf8'){
  10. return $string;
  11. }elseif($is_utf8){
  12. return mb_convert_encoding($string, $encoding, "UTF-8");
  13. }else{
  14. return mb_convert_encoding ($string, $encoding, 'gbk,gb2312,big5');
  15. }
コードをコピー

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。