| #! /usr/local/bin/php -q
 <?php
 while(!file_live());
 echo "\n您所輸入的是:".$dir_name."\n";
 $stdin = fopen('php://stdin', 'r');
 echo "\n***************************************************************************************
 本程式會將您指定的檔案或目錄(包含目錄底下的檔案)由簡體轉換成繁體
 所轉成的檔案或目錄會將至於您所指定的目錄的同一層,並於檔案或目錄前面加上\"big5_\"作為識別
 本程式不做任何擔保,請評估後自行決定使用!
 ***************************************************************************************\n";
 echo "\n您確定要執行本程式?確定請按[y],離開請按[n]\n";
 
 $sure = fgets($stdin,100);
 $sure=substr($sure,0,-1);
 if($sure!="y") { echo "\n再見!\n"; exit;}
 register_shutdown_function('goodbye');
 trim($dir_name);
 if(substr($dir_name,-1)=="/") $path=substr($path,0,-1);
 $dir_array = explode("/",$dir_name);
 end($dir_array);
 $key=key($dir_array);
 if(is_dir($dir_name)) {//若為目錄則呼叫rec進行轉換
 $len=strlen(substr(strrchr ($dir_name, "/"),1));
 $n_len=$len*-1;
 $new_dir=substr($dir_name,0,$n_len)."big5_".substr(strrchr ($dir_name, "/"),1);
 if(mkdir ($new_dir, 0755)) {
 echo "建立目錄".$new_dir."\n";
 get_file($dir_name,$key);
 }else{
 echo "目錄".$new_dir."已經存在,請先刪除\n";
 }
 }else{
 $str=Gb_Big5($dir_name);
 $len=strlen(substr(strrchr ($dir_name, "/"),1));
 $n_len=$len*-1;
 $ddir_name=substr($dir_name,0,$n_len)."big5_".substr(strrchr ($dir_name, "/"),1);
 $FP=fopen ($ddir_name, "w+");
 if($FP) echo "檔案".$ddir_name."建立\n";
 fwrite ($FP, $str);
 fclose ($FP);
 }
 
 
 function get_file($dir_name,$key){
 $d = dir($dir_name);
 while($entry = $d->read()){
 if($entry=="." || $entry=="..") continue;
 $ddir_name=$dir_name."/".$entry;
 if(is_dir($ddir_name)){
 $ddir_array=explode("/",$ddir_name);
 $ddir_array[$key]="big5_".$ddir_array[$key];
 $new_dir=implode("/",$ddir_array);
 if(mkdir ($new_dir, 0755)) {
 echo "建立子目錄".$new_dir."\n";
 get_file($ddir_name,$key);
 }
 } else{
 echo $ddir_name."轉換中...\n";
 $str=Gb_Big5($ddir_name);
 $ddir_array=explode("/",$ddir_name);
 $ddir_array[$key]="big5_".$ddir_array[$key];
 $new_dir=implode("/",$ddir_array);
 $FP=fopen ($new_dir, "w+");
 if($FP) echo "檔案".$new_dir."建立\n";
 fwrite ($FP, $str);
 fclose ($FP);
 }
 }
 $d->close();
 }
 
 
 
 
 function Gb_Big5($file) {
 //var $gb_map="gb.map"; //如果要放到別的路徑,要加上完整路徑
 $big5_map="/root/php_shell/big5.map"; //例如 ="/home/table/gb.map
 $dep_char = 127;
 $str=file_get_contents($file);
 $fd = fopen ($big5_map, "r");
 $str=str_replace("charset=gb2312","charset=big5", $str);
 $outstr="";
 for($i=0;$i<strlen($str);$i++) {
 $ch=ord(substr($str,$i,1));
 if($ch > $dep_char) {
 $outstr.=cgb_big5(substr($str,$i,2),$fd);
 //echo $outstr."\n";
 $i++;
 } else {
 $outstr.=substr($str,$i,1);
 }
 }
 fclose ($fd);
 return $outstr;
 
 }
 
 function cgb_big5($str,$fd) {
 $c=ord(substr($str,0,1));
 $x=ord(substr($str,1,1));
 $address=(($c-160)*510)+($x-1)*2;
 fseek($fd, $address);
 $hi=fgetc($fd);
 $lo=fgetc($fd);
 //echo "$hi$lo";
 return "$hi$lo";
 }
 
 function file_live(){
 global $dir_name;
 $stdin = fopen('php://stdin', 'r');
 if($dir_name) echo "\n您所輸入的檔案或目錄不存在!";
 echo "\n請輸入您要簡體變繁體的檔案或目錄完整名稱:";
 $dir_name = fgets($stdin,100);
 fclose($stdin);
 $dir_name=substr($dir_name,0,-1);
 
 if( is_dir($dir_name) || is_file($dir_name)) {
 return $dir_name;
 }else{
 return 0;
 }
 }
 
 function goodbye(){
 
 echo "\n程式執行完畢!\n";
 
 }
 
 ?>
 |