在PHP5.0 中,simplexml_load_file()是一個很好的讀取和處理XML文件的函數,但是在讀取和處理中文時會出現亂碼,經過研究發現,如果是中文內容,必須經過iconv編碼轉換,否則顯示為亂碼,代碼如下:
- $xml=simple_load_file('xml文件');
- foreach($xml->soft as $temp){
- echo $temp->name; //這就是軟件名稱了。
- echo $temp->mem; //這就是軟件說明了。
- }
英文正確中文亂碼,這個我估計就是編碼問題了,后來網上找到了相關文章,如核心如下:
1、如果xml的encoding與文件類型不符,立刻報錯
2、simplexml可以處理gbk的XML,即文件內容和encoding都為gbk(ANSI格式)
3、不管文件內容是什么,處理完了,都是UTF8.
具體方法如下:$chname = iconv('utf-8', 'gb2312', $table->param["name"]);
實現將編碼為'utf-8'的XML文件內容轉換為 gb2312 格式的內容,中文編碼采用gb2312格式輸出,還有一種辦法本人沒測試過直接攤販頁面編碼轉成uft8,代碼如下:
- header("Content-type: text/html; charset=utf-8");
- //因為wordpress默認編碼是utf-8,但IE默認識別為gb2312,所以用header發一下編碼
- $url="http://www.111cn.net";
- $xml = simplexml_load_file($url);
- //載入遠程XML文件
- $title=$xml->channel->title;
- //根據節點獲取博客標題(不循環)
- echo $title."<br />";
- //如果節點循環了,可以用foreach循環取出
- foreach($xml->channel->item as $item){
- echo $item->title."<br />";
- }
- //循環取出文章標題
新聞熱點
疑難解答