国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Regex > 正文

PHP 正則表達式分析RSS

2020-03-16 21:17:28
字體:
來源:轉載
供稿:網友
近做了一個讀取中國新聞網RSS的頁面。首先是把RSS文檔下載下來保存到本地
 
 
復制代碼代碼如下:

$xmlfile = 'news/'.date('YmdH').'.xml'; 
$sourcexml = 'http://www.chinanews.com.cn/rss/scroll-news.xml'; 
if( !file_exists($xmlfile) ) { 
$str = @file($sourcexml) or die('加載文件時出錯。'); 
$fp = fopen($xmlfile,'w') or die('寫緩存失敗!'); 
fputs($fp,$str); 
fclose($fp); 

然后用simplexml讀取并輸出HTML 
復制代碼代碼如下:

$xml = simplexml_load_file($xmlfile); 
$c = $xml->channel; 
$k = 0; 
foreach($c->item as $v) { 
$k ++; 
echo " 
<div class=/"newsline/">·<a /> 后來遇到了一個問題,就是RSS中經常包含有一些GBK的繁體字。google了很多字符集轉換方面的文章。得出一個解法: 
復制代碼代碼如下:

$str = mb_convert_encoding( join('',$str), "gb2312", "GBK"); 

這個方法并不能繁體轉為簡體,會轉成一個亂碼,但至少能保證simplexml_load_file($xmlfile)執行成功。因為這些繁體字通常出現在描述里 
,暫且接受。 
再后來遇到另一個問題,描述里出現了形如“中新網12月30日電(聞育e?”的亂碼,simplexml_load_file失敗。 
至此考慮用正則表達式獲取標題和鏈接。(有文章說正則表達式效率可能更好,以后再驗證) 
代碼如下: 
復制代碼代碼如下:

$fp = fopen($xmlfile,'r'); 
if($fp) 

$data = fread($fp,filesize($xmlfile)); 
fclose($fp); 
preg_match_all( 
"/<item><title>(.*?)<//title><link>(.*?)<//link>/i",$data,$out,PREG_SET_ORDER); 
foreach($out as $key => $v) 

$v[1] = iconv('gbk','utf-8',$v[1]); 
echo " 
<div class=/"newsline/">·<a style="padding: 0px 0px 20px; margin: 0px; clear: both; overflow: hidden; width: 680px; color: rgb(0, 0, 0); font-family: Tahoma, Helvetica, Arial, 宋體, sans-serif; background-color: rgb(247, 252, 255);">  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 繁峙县| 犍为县| 民乐县| 咸丰县| 冕宁县| 延庆县| 深州市| 昭苏县| 威远县| 布拖县| 盖州市| 濮阳县| 崇州市| 西城区| 遂平县| 陆丰市| 建瓯市| 右玉县| 阳谷县| 淮滨县| 光泽县| 安岳县| 清流县| 乐亭县| 花垣县| 板桥市| 平潭县| 石渠县| 巍山| 岢岚县| 襄垣县| 葵青区| 塘沽区| 安泽县| 建水县| 锦屏县| 龙里县| 新疆| 京山县| 伊川县| 冷水江市|