ホームページ > バックエンド開発 > PHPチュートリアル > PHP は、gb2312 および utf-8 エンコード変換関数を実行するために iconv ライブラリを使用しません。

PHP は、gb2312 および utf-8 エンコード変換関数を実行するために iconv ライブラリを使用しません。

WBOY
リリース: 2016-07-25 09:08:06
オリジナル
1007 人が閲覧しました
  1. //比較表の使い方

  2. $filename = "gb2utf8.txt";
  3. $fp = fopen($filename,"r");
  4. while(! feof ($fp)) {
  5. list($gb,$utf8) = fgetcsv($fp,10);
  6. $charset[$gb] = $utf8;
  7. }
  8. fclose($fp);
  9. //上記の読み取り後で使用するためにテーブルを配列に検索します

  10. /**gb2312 から utf-8**/

  11. function gb2utf8($text, &$charset) {
  12. //テキスト内のコンポーネントを抽出します。漢字は 1 つです要素、連続 中国語以外の文字は要素です
  13. preg_match_all("/(?:[x80-xff].)|[x01-x7f]+/",$text,$tmp);
  14. $tmp = $tmp[ 0];
  15. / /中国語の文字を区切る
  16. $ar = array_intersect($tmp, array_keys($charset));
  17. //中国語の文字エンコーディングを置き換える
  18. foreach($ar as $k=>$v)
  19. $tmp[ $k] = $charset [$v];
  20. //エスケープされた文字列を返します
  21. return join('',$tmp);
  22. }

  23. /**utf-8 から gb2312**/

  24. function utf82gb($ text, &$charset) {
  25. $p = "/[xf0-xf7][x80-xbf]{3}|[xe0-xef][x80-xbf]{2}|[xc2-xdf] [x80-xbf ]|[x01-x7f]+/";
  26. preg_match_all($p,$text,$r);
  27. $utf8 = array_flip($charset);
  28. foreach($r[0] as $k= >$v )
  29. if(isset($utf8[$v]))
  30. $r[0][$k] = $utf8[$v];
  31. return join('',$r[0]);
  32. }< /p>
  33. //Test

  34. $s = gb2utf8('これは比較表のテストです', $charset);
  35. echo utf82gb($s, $charset);
  36. ?> ;

コードをコピー


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