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

首頁 > 編程 > regex > 正文

PHP 正則表達式分析RSS

2020-01-20 22:22:52
字體:
來源:轉載
供稿:網友
復制代碼 代碼如下:

$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 title=/"$v->title/" href=/"$v->link/" target=/"_blank/">$v->title</a></div>
";

后來遇到了一個問題,就是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 title=/"$v[1]/" href=/"$v[2]/" target=/"_blank/">$v[1]</a></div>
";
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 清水河县| 文登市| 苍梧县| 汪清县| 台前县| 德清县| 如东县| 广南县| 资中县| 交口县| 娄底市| 阿合奇县| 牙克石市| 乐亭县| 吴堡县| 余庆县| 成都市| 红桥区| 大宁县| 师宗县| 钟山县| 崇阳县| 双峰县| 资中县| 航空| 石门县| 广平县| 秦皇岛市| 东辽县| 咸丰县| 丰顺县| 赤峰市| 河津市| 双辽市| 万全县| 北碚区| 弥渡县| 滕州市| 奈曼旗| 鲁甸县| 庆安县|