線上書籍

Home

[1042] XOOPS模組開發進階

一、 HTML匯出(下載)
  1. 匯出功能主要是靠header來定義文件的檔頭,進而生出檔案(匯出記得關除錯)。 header("Content-type: text/html"); header("Content-Disposition: attachment; filename=檔名"); echo 主要內容; exit;

     

  2. 利用mime-type即可將文件偽裝成各種檔案(特別是文字檔): http://www.freeformatter.com/mime-types-list.html
  3. 下載時,IE可能會變成亂碼檔名,可用iconv("UTF-8","Big5",$檔名),將檔名轉成Big5編碼即可。(但若遇到檔名有特殊字的,就會變成缺字了)
  4. 若是要把檔案存在主機上,請改用file_put_contents ( $檔名 , $檔案內容 ); if (file_put_contents(XOOPS_ROOT_PATH . '/uploads/contact.html', $html)) { redirect_header('index.php', 3, '已完成!'); }

     

二、 CSV匯出(下載)
  1. 同HTML,將mime-type改為text/csv即可。
  2. Excel的CSV格式僅支援Big5編碼,故內容需用iconv轉為Big5。UTF-8編碼的CSV檔Openoffice的Calc可以讀取。
  3. Excel的CSV格式通常用小寫「,」隔開;而Calc預設用「;」隔開,且遇到文字需用雙引號"包起來。
三、 CSV匯入
  1. 匯入文字檔上傳介面: <form action="main.php" method="post" enctype="multipart/form-data"> <input type="file" name="userfile"> <input type="hidden" name="op" value="import_csv"> <input type="submit" value="匯入"> </form>

     

  2. 匯入CSV檔: $handle = fopen($_FILES['userfile']['tmp_name'], "r") or die("無法開啟"); while (($data = fgetcsv($handle, 1000)) !== false) { $sql = "insert into `" . $xoopsDB->prefix("phone_book") . "` (`sn`, `cate_sn`, `name`, `birthday`, `phone`, `email`, `zip`, `county`, `city`, `addr`, `note` ) values('{$data[0]}', '{$data[1]}', '{$data[2]}', '{$data[3]}', '{$data[4]}', '{$data[5]}', '{$data[6]}', '{$data[7]}', '{$data[8]}', '{$data[9]}', '{$data[10]}' )"; $xoopsDB->queryF($sql) or web_error($sql); } fclose($handle);

     

  3. 控制符=fopen(檔名,模式):打開檔案,布林值=fclose(檔案控制符):關閉檔案
  4. 陣列=fgetcsv(檔案控制符,[最長讀取長度],[分格符號],[文字引號]):讀取CSV檔
四、 JSON匯出(下載)
  1. 同HTML,將mime-type改為application/json 即可
  2. 如果是要給其他程式線上介接,一般不需要用header()來指定格式,直接echo即可。
  3. 以PHP而言,利用json_encode("中文", JSON_UNESCAPED_UNICODE); 就可把陣列轉換為json格式
五、 JSON匯入
  1. 利用json_decode($json)就可以把json轉換為PHP陣列。
  2. 擷取遠端的json檔案可以利用file_get_contents ($檔名) 來抓取!
  3. http://data.gov.tw/data_list
  4. http://data.tainan.gov.tw/dataset