天天看點

PHP版本繁簡體,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

研究VtigerCRM時,試圖把繁體語言插件轉成簡體版,并去除對iconv的依賴,因為很多php空間不支援;研究過GB2312,Big5,UTF-8之間的轉化方法。後來就扔到了一邊,最近有多個朋友詢問解決方案,于是重新找出來貢獻給大家;

本人對php所知不多,即使偶爾修改些php的網頁也是摸索着查資料來實作,望php行家莫見笑。

這個方案的特點就是使用簡單,隻要在需要調用轉換函數的頁面加入include_once'language.inc',就可以友善使用函數了。

關于使用方法就附上我當初轉語言插件的代碼:

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

<?php

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

    function dirtree($path=".") 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

    {

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

        include_once 'language.inc';

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

        $d = dir($path); 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

        while(false !== ($v = $d->read()))

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

        { 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

            if($v == "." || $v == "..") 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                continue; 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

            $file = $d->path."/".$v; 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

            if(is_dir($file)) 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

            { 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                //echo "$v"; 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                dirtree($file); 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

            } 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

            else 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                echo $file."\n";

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                //rename($file,str_replace('zh_tw','zh_cn',$file));

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                //$filename='zh_cn.lang.php';                

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                $fd=fopen($file,'r');                

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                $contents = fread($fd, filesize($file));                

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                $contents=u2b($contents);

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                $contents=b2g($contents);

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                //echo $contents;

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                $contents=str_replace('日','月曆',$contents);

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                $contents=g2u($contents);

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                $contents=str_replace('Trade chinese language pack created by METO, Inc. http://www.meto.com.tw','Simple chinese language pack created by Steed Soft Technology, Inc. http://www.steedsoft.com',$contents);

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                fclose($fd);

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                $fd=fopen(str_replace('zh_tw/','zh_cn/',str_replace('zh_tw','zh_cn',$file)),'w');

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                fwrite($fd,$contents);

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等
PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

                //rename($file,str_replace('zh_tw','zh_cn',$file));                

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

        }

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

         $d->close(); 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

         //echo " "; 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

     } 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

     dirtree("zh_tw"); 

PHP版本繁台灣,UTF-8和Unicode互轉的函數:GB2312Big5,GB2312UTF-8,Big5UTF-8等

 ?>

<a href="http://www.layman.5gigs.com/download/dl.php?msg_id=10956b6fc41d59d8&amp;attid=0.1&amp;filesize=347988&amp;filename=gb_big5_utf8.zip&amp;user=0">下載下傳位址</a>

P.S

該方案的缺點,因為繁體中文和簡體中文存在一定的詞法不一緻的情況,是以會發現有些詞無法轉換,我從網上找到了兩個處理該問題的dat檔案,但具體實作我沒有做,以後也許會抽時間研究下并做個更新。