loading
Please wait while loading...

查看詳情 讓 IE 用戶下載 docx, xlsx

Office 自 07 或以後版本提供了新的副檔名, 就是在原有副檔名加上了一個「x」, 例如 doc 變成了 docx, 如果你需要在伺服器提供 docx, xlsx, pptx 等檔案的下載, 在 firefox 或 chrome 等瀏覽器是沒有問題的, 可是如果用 IE 下載, 便會發現檔案變成了一個 zip 檔, 無法正確下載文件, 這是因為 IE 並不認得這種「新型」的檔案, 要解決這個問題, 便需要在 server 端寫一些額外的語法了

header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
header('Content-Disposition: attachment; filename="'.$filename.'"');
readfile($path);

查看詳情 解決 fgetcsv 中文亂碼的問題

今天用 fgetcsv 進行文件匯入時, 發現某些文字是出現亂碼, 而如果將文件內容直接輸出是沒有此問題的, 原因明顯不過就是 fgetcsv 出的問題了, 在網上搜尋解決方案, 找到了以下的 function, 是有人重寫 fgetcsv 制作出來的, 我就直接把它改了名字, 不跟原本的 fgetcsv 重覆了, 使用此 function 果然解決了亂碼問題
function ffgetcsv(&$handle, $length = null, $d = ",", $e = '"') {
    $d = preg_quote($d);
    $e = preg_quote($e);
    $_line = "";
    $eof=false;
    while ($eof != true) {
        $_line .= (empty ($length) ? fgets($handle) : fgets($handle, $length));
        $itemcnt = preg_match_all('/' . $e . '/', $_line, $dummy);
        if ($itemcnt % 2 == 0)
            $eof = true;
    }
   $_csv_line = preg_replace('/(?: |[ ])?$/', $d, trim($_line));

    $_csv_pattern = '/(' . $e . '[^' . $e . ']*(?:' . $e . $e . '[^' . $e . ']*)*' . $e . '|[^' . $d . ']*)' . $d . '/';
    preg_match_all($_csv_pattern, $_csv_line, $_csv_matches);
    $_csv_data = $_csv_matches[1];

    for ($_csv_i = 0; $_csv_i < count($_csv_data); $_csv_i++) {
        $_csv_data[$_csv_i] = preg_replace("/^" . $e . "(.*)" . $e . "$/s", "$1", $_csv_data[$_csv_i]);
        $_csv_data[$_csv_i] = str_replace($e . $e, $e, $_csv_data[$_csv_i]);
    }
    return empty ($_line) ? false : $_csv_data;
}

查看詳情 將陣列輸出為 xml (包含無限層級)

以下是 PHP 5.2 的例子:

...........

查看詳情 歡迎來到我的網誌

很高興這個 Blog 終於完成了,經過幾個月時間,因為沒什麼設計的天份,界面改完又改, 改了無數次,終於勉強用上了現在的設計, 希望大家不會覺得太差吧!

自從沒有用 Xanga 後,就幾乎沒有再寫網誌了,希望藉此可以再跟大家分享一下我成為 Programer 後的生活點滴。

1 2