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

PHPでテキストエンコーディングを自動的に識別して変換する方法

WBOY
リリース: 2016-06-20 13:01:25
オリジナル
1258 人が閲覧しました

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

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

郵便番号:

/**      
* @ string 需要转换的文字     
* @ encoding 目标编码     
**/
    function detect_encoding($string,$encoding = 'gbk'){        
    $is_utf8 =  preg_match('%^(?:[\x09\x0A\x0D\x20-\x7E]| [\xC2-\xDF][\x80-\xBF]|  \xE0[\xA0-\xBF][\x80-\xBF] | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}    |  \xED[\x80-\x9F][\x80-\xBF] |  \xF0[\x90-\xBF][\x80-\xBF]{2}  | [\xF1-\xF3][\x80-\xBF]{3}  |  \xF4[\x80-\x8F][\x80-\xBF]{2} )*$%xs', $string);        
    if($is_utf8 && $encoding == 'utf8'){        
        return $string;        
    }elseif($is_utf8){        
        return mb_convert_encoding($string, $encoding, "UTF-8");             
    }else{        
        return mb_convert_encoding($string, $encoding, 'gbk,gb2312,big5');          
    }        
}
ログイン後にコピー

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート