朋友給我一個網路相簿,要我看看裡面的東西,但是單張單張點好慢,乾脆下載下來再從檔案總管看好了。
本來要用像 FlashGet 之類的批次下載的工具,不過檔案有 XML 格式的檔案清單、但檔名不規律,就自己寫程式抓。
朋友給我一個網路相簿,要我看看裡面的東西,但是單張單張點好慢,乾脆下載下來再從檔案總管看好了。
本來要用像 FlashGet 之類的批次下載的工具,不過檔案有 XML 格式的檔案清單、但檔名不規律,就自己寫程式抓。
今天遇到一個在 Load balancer 上的網站,採用 PHP 5 的 A 主機網頁正常,但使用 PHP 7 的 B 主機版面就怪怪的。追蹤了一下,看起來是 fgetcsv() 出問題,沒有正常解析。我們的 CSV 檔是 Big5 編碼的,看起來是解析了某個中文欄位之後,後續欄位就有異常。
上網查了一下,找到《PHP讀取BIG5編碼的CSV檔》,裡面提到:
「但如果 CSV 檔是 BIG5 編碼,當中文字中有包含反斜線(\)字元的衝碼字,
手上有一個網站,大部分的網頁語系都是宣告為 UTF-8,只有某個資料夾裡的網頁比較特別,都宣告為 Big5。今天看到測試的 server 裡, 宣告成 Big5 的那個資料夾的每一支網頁都變成以 UTF-8 模式載入,以至於使用者在不手動切換編碼的狀況下會看到一堆亂碼。
研究了一下原始碼,META 裡有宣告 Big5 沒錯。
<meta http-equiv="Content-Type" content="text/html; charset=big5">
可是從 Chrome 的開發人員工具,可以看到該網頁的 Response headers 送出語系 (charset) 為 UTF-8。
參考 "PHP – Using oEmbed API to Embed Videos",想取回 JSON 資料,卻一直失敗。
研究了一下 PHP Manul,發現原因是文章裡說可以透過這樣的語法取值:
<?php
解決的思維和上次連線到 Oracle 的問題很像(上次處理 Oracle 的心得:[PHP] 如何使用 PHP 的 OCI8 連線至 Oracle):
模仿前人的程式,寫了一段超迷你的程式要連 Oracle,但一直跳出的錯誤訊息:
PHP Fatal error: Call to undefined function Ora_Logon()
查了一下官方文件,Ora_* 這種函式看起來不是官方支援的,網路上的文章倒是不少,可能是過時所以被拿掉了吧?向同事拿了他開發機上頭 PHP 的 ext 資料夾底下的 php_oracle.dll,嘗試在 php.ini 加上 "extension=php_oracle.dll",結果出現新的錯誤:
PHP Startup: Unable to load dynamic library 'C:/php/ext/php_oracle.dll' - 找不到指定的模組。
怪了,明明就放在一樣的路徑下。研究別人找不到模組的原因,有人說和引用順序有關,於是放在 ";extension=php_oci8.dll" 這行之後,一樣沒用,不過把 ";extension=php_oci8.dll" 的註解拿掉(這行最前面的分號刪除掉),「找不到指定的模組」這個錯誤訊息就消失了。但還是不認得 Ora_Logon() 這個函式。
租了一個 Godaddy 的空間,預設的時區是 America/Phoenix。不管是開 .htaccess 做這樣的設定:
SetEnv TZ Asia/Taipei
還是在 php.ini 做這樣的設定:
[Date]
我為網站的表單開了一個 bit 型態的欄位來儲存布林值 (boolean),取出時發現怎麼取,不管裡頭存的是 true (1) 或 false (0),抓出來都會被判斷成 true。
不管是這樣:
if($row_data["is_user"]==1)
還是這樣:
寫了一個上傳檔案功能,基本上上傳是沒有問題,但是第一個字元會被吃掉。
比方說上傳一個檔案 "123.pdf",上傳後檔名部分只能抓到 "23.pdf",超怪。
原本以為是編碼問題,但越調反而越多狀況。
之前在本機開發時,在 Windows\System32\drivers\etc 的 hosts 檔案裡,故意設了一組 abc_test 的對應:
127.0.0.1 abc_test
同時也在 Apache 設定 virtual host,這樣在開發時連到 http://abc_test,就可以預覽效果,未來上線時也比較不用擔心相對路徑層數不同,會造成破圖或檔案連結有誤等問題。
不過,在 firefox 上開發完畢後,到 IE 上想要看跨瀏覽器效果時,卻連登入都沒辦法登入。
網站從測試環境送上 production 之後,我在 IE9 可以下載檔案,但使用者反映他使用 IE8 無法正確下載。
錯誤訊息為:
「Internet Explorer 無法下載 xxx.php 從 xxx.xxx.xxx.tw。
試著產生 ZIP 壓縮檔,下載檔案產生後,解壓縮時卻顯示「這個壓縮檔不是未知的格式就是損壞。」
研究了一下,原因是因為我用到了 TemplatePower,在頁首就 include 了 TemplatePower,使得頁面輸出壓縮檔時有了多餘的字元。
這一天是透過 jQuery.ajax() 送出 request 後,發生資料拿不回來的錯誤。故事是這樣發生的──我有一段短短的 AJAX 和很簡單的 PHP,AJAX 大概是長成這個樣子的:
$.ajax({
在 Visual Studio,只要在函式 (function) 或類別 (class) 上方按下三次註解符號,就會自動產生一段 XML 格式的註解。填完這段註解後,在輸入函式時就會自動解析 XML 的內容,成為函式或類別使用的提示 (intellisense)。例如說這個函式有三個參數,每個參數應該給什麼格式?給定的參數的代表意義是什麼?如果每次寫新的函式時都能照著寫,日後呼叫函式或使用類別時,就能輕鬆辨識每一段程式碼的應用方式。今天發現在 eclipse 裡也有類似的功能。
完成函式的撰寫之後,輸入「/**」。接著按下 Enter,就會自動帶出後續的輸入提示。以下圖的程式碼為例,因為需要帶進一個參數,所以會自動要你填上參數的用意(寫在 @param 之後)。