<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      不用iconv庫的gb2312與utf-8的互換函數

      [摘要]一份gb2312.txt(184799字節)確實顯得太大了點,而且還要經unicode轉換。 這份對照表為51965字節,要小的多了。 對于無法使用iconv函數庫的場合還是很實用的。 <?php //對照表的使用 filename = "gb2utf8.txt"; fp...

      一份gb2312.txt(184799字節)確實顯得太大了點,而且還要經unicode轉換。
      這份對照表為51965字節,要小的多了。
      對于無法使用iconv函數庫的場合還是很實用的。

      <?php
      //對照表的使用
      $filename = "gb2utf8.txt";
      $fp = fopen($filename,"r");
      while(! feof($fp)) {
      list($gb,$utf8) = fgetcsv($fp,10);
      $charset[$gb] = $utf8;
      }
      fclose($fp);
      //以上讀取對照表到數組備用

      /** gb2312到utf-8 **/
      function gb2utf8($text, &$charset) {
      //提取文本中的成分,漢字為一個元素,連續的非漢字為一個元素
      preg_match_all("/(?:[\x80-\xff].) [\x01-\x7f]+/",$text,$tmp);
      $tmp = $tmp[0];
      //分離出漢字
      $ar = array_intersect($tmp, array_keys($charset));
      //替換漢字編碼
      foreach($ar as $k=>$v)
      $tmp[$k] = $charset[$v];
      //返回換碼后的串
      return join('',$tmp);
      }

      /** utf-8到gb2312 **/
      function utf82gb($text, &$charset) {
      $p = "/[xf0-xf7][x80-xbf]{3} [xe0-xef][x80-xbf]{2} [xc2-xdf][x80-xbf] [x01-x7f]+/";
      preg_match_all($p,$text,$r);
      $utf8 = array_flip($charset);
      foreach($r[0] as $k=>$v)
      if(isset($utf8[$v]))
      $r[0][$k] = $utf8[$v];
      return join('',$r[0]);
      }

      //測試
      $s = gb2utf8('這是對照表的測試', $charset);
      echo utf82gb($s, $charset);
      ?>




      日韩精品一区二区三区高清