a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > 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>
";
}
}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色综合激情 | 亚洲欧美成人网 | 日韩一区二区在线电影 | 国产免费黄色大片 | 欧美一区二区三区视频 | 日本不卡免费新一二三区 | 四虎影视在线播放 | 欧美日韩专区 | 精品三级在线观看 | 国内久久 | 欧美亚洲另类在线 | 成人国产一区二区 | 成人自拍视频 | 99久久婷婷 | www.狠狠干| 91视频播放| 99久久综合国产精品二区 | 激情视频区 | 午夜视频在线免费观看 | 欧美精品在线观看 | 中文字幕成人在线视频 | 亚洲精品乱码久久久久久国产主播 | 亚洲一级片 | 成人免费黄色 | 国产大片aaa | 自拍偷拍99 | 国产在线小视频 | 欧美日本韩国一区二区三区 | 日本中文在线观看 | 国产成人精品免费 | 一区二区三区在线 | 欧 | 日韩成人在线观看 | 欧美日韩高清一区 | 精品久久99 | 欧美亚洲国产精品 | 跪求黄色网址 | 日本精品999 | 欧美九九九 | 麻豆一区一区三区四区 | 日日草视频 | 欧美日韩在线观看中文字幕 |