最近小陽做了一個PHP同學錄,同學們自己在那裡添加或修改姓名、郵箱、OICQ等資訊,並儲存在mySQL資料庫裡。某日小陽突然想到,如果能用PHP產生一個檔案,供同學們下載並把這些資料匯入他們的Foxmail地址簿中,那該多好啊!
說幹就幹,很快小陽便將這功能推出來了。那是如何?的呢?這裡僅以匯出姓名、郵箱和OICQ三項予以說明。
要資料可以匯入Foxmail地址簿,當然要先瞭解一下匯入Foxmail地址簿的檔案內容和格式。開啟Foxmail4.2一個帳戶的地址簿,在其功能表列“工具”-“匯入”中可以看到,Foxmail支援兩種外部檔案的匯入:“CSV檔案”和“Wab檔案”。我們選擇產生CSV檔案。那麼可以匯入Foxmail的CSV檔案的內容和格式如何呢?讓我們先從Foxmail匯出一個CSV檔案看一下。在Foxmail地址簿中選擇一個記錄不為空白的檔案夾,執行“工具”-“匯出”- “文字檔”,儲存檔案名稱為“TEMP.CSV”, 在“下一步”的“請選擇輸出欄位”中選擇“姓名”、“電子郵箱地址”和“OICQ”,點擊“完成”後便在指定路徑產生了“TEMP.CSV”檔案了。如果你裝了微軟office系列,會發現這是一個用EXCEL預設開啟的檔案,實際上它是EXCEL的逗點分隔值檔案,雙擊開啟後,其介面。
我們在這種情況下還是無法知道它的寫入格式的。將“TEMP.CSV”檔案改為用記事本開啟,便可以發現它的格式非常簡單:,檔案第一行是Foxmail地址簿的欄位,其它行是欄位對應的值,各欄位和值用英文逗號分隔。所以我們在PHP中按這種格式產生CSV檔案,別人就可以下載並匯入他們的Foxmail中了!
不過還有一個問題需要解決,那就是既然檔案中以逗號作為分隔值,如果資料庫記錄中有英文逗號(註:以下符號若無特別說明皆指英文符號)怎麼辦?當然你可以先將資料中的逗號替換為中文逗號,但其實還有一個方法,那就是如果CSV檔案相應的欄位兩端加上雙引號(“即" "”)作分隔值,其間的英文逗號不作為分隔值,且欄位中連續兩個英文雙引號(即“"”)也只作為一個顯示,而不作為分隔值。
有了這些認識,我們就可以編寫匯出CSV檔案的PHP檔案了:
在伺服器上運行上述PHP檔案,下載回來的“tofoxmail.csv”檔案用記事本開啟。
在Foxmail地址簿中點擊“工具”-“匯入”-“CSV檔案”……,資料庫中一大堆的資料一下子就全被匯入了,這個主意還不錯吧!
(以上程式在Apache+PHP4+mySQL和IIS+PHP4+mySQL中皆測試通過。)