2009-04-29

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

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


<?php
// 設定最長執行的秒數
ini_set ("expect.timeout", 30);
set_time_limit(30);

if($_GET['url']){
// 設定原始編碼及目標編碼
$source=($_GET['source'])? $_GET['source']: 'UTF-8';
$target=($_GET['target'])? $_GET['target']: 'BIG5';

// 取得 URL
$url=$_GET['url'];

// 初始化 CURL
$ch = curl_init();

// 設定 URL
curl_setopt($ch, CURLOPT_URL, $url);
// 讓 curl_exec() 獲取的信息以資料流的形式返回,而不是直接輸出。
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
// 在發起連接前等待的時間,如果設置為0,則不等待
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
// 設定 CURL 最長執行的秒數
curl_setopt ($ch, CURLOPT_TIMEOUT, 30);

// 嘗試取得文件內容
$store = curl_exec ($ch);

// 檢查文件是否正確取得
if (!curl_errno($ch)){
// 編碼轉換
echo iconv($source,$target, $store);
exit;
}
}
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>線上編碼文件轉換器</title>
</head>
<body style="width:28em;margin:5% auto;text-align:center;">
<form method="get" action="">
<fieldset>
<legend>線上編碼文件轉換器</legend>
<label>URL : <input type="text" name="url" size="48" /></label>
<p>
<input type="text" name="source" size="12" value="UTF-8" />
-&gt; 轉換至 -&gt;
<input type="text" name="target" size="12" value="BIG5" />
</p>
<p><input type="submit" value="開始轉換"/></p>
</fieldset>
</form>
</body>
</html>



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

0 回應: