最近小陽做了一個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中皆測試通過。)