2009-04-29 17:22

[PHP] 線上編碼文件轉換器

這是利用 iconv 及 curl 去做線上文件編碼轉換,之前為了讓桌面行事曆能夠讀取 Google Calendar 而做的轉換器。

  1. <?php  
  2. // 設定最長執行的秒數 
  3. ini_set ("expect.timeout", 30); 
  4. set_time_limit(30); 
  5.  
  6. if($_GET['url']){ 
  7.    // 設定原始編碼及目標編碼 
  8.    $source=($_GET['source'])? $_GET['source']: 'UTF-8'; 
  9.    $target=($_GET['target'])? $_GET['target']: 'BIG5'; 
  10.  
  11.    // 取得 URL 
  12.    $url=$_GET['url']; 
  13.  
  14.    // 初始化 CURL 
  15.    $ch = curl_init(); 
  16.  
  17.    // 設定 URL  
  18.    curl_setopt($ch, CURLOPT_URL, $url);  
  19.    // 讓 curl_exec() 獲取的信息以資料流的形式返回,而不是直接輸出。 
  20.    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
  21.    // 在發起連接前等待的時間,如果設置為0,則不等待 
  22.    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0); 
  23.    // 設定 CURL 最長執行的秒數 
  24.    curl_setopt ($ch, CURLOPT_TIMEOUT, 30); 
  25.  
  26.    // 嘗試取得文件內容 
  27.    $store = curl_exec ($ch); 
  28.  
  29.    // 檢查文件是否正確取得 
  30.    if (!curl_errno($ch)){ 
  31.        // 編碼轉換 
  32.        echo iconv($source,$target, $store); 
  33.        exit; 
  34.    } 
  35. } 
  36. ?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
  37. <html> 
  38. <head> 
  39.    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
  40.    <title>線上編碼文件轉換器</title> 
  41. </head> 
  42. <body style="width:28em;margin:5% auto;text-align:center;"> 
  43.  <form method="get" action=""> 
  44.    <fieldset> 
  45.      <legend>線上編碼文件轉換器</legend> 
  46.      <label>URL : <input type="text" name="url" size="48" /></label> 
  47.      <p> 
  48.        <input type="text" name="source" size="12" value="UTF-8" />  
  49.        -&gt; 轉換至  -&gt; 
  50.        <input type="text" name="target" size="12" value="BIG5" /> 
  51.      </p> 
  52.      <p><input type="submit" value="開始轉換"/></p> 
  53.    </fieldset> 
  54.  </form> 
  55. </body> 
  56. </html> 


參考文章:
PHP程式學習筆記本(PHP.Javascript.Mysql.cakephp.Jquery.Smarty): php.curl詳解

0 回應: