专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »编程综合 » php正则表达式:PHP 正则表达式分析RSS »正文

php正则表达式:PHP 正则表达式分析RSS

来源: 发布时间:星期日, 2009年9月6日 浏览:5次 评论:0
复制代码 代码如下:

$xmlfile = 's/'.date('YmdH').'.xml';
$sourcexml = 'http://www.chinas.com.cn/rss/scroll-s.xml';
( !file_exists($xmlfile) ) {
$str = @file($sourcexml) or die('加载文件时出错');
$fp = fopen($xmlfile,'w') or die('写缓存Cache失败!');
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 =\"sline\">·<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');
($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 =\"sline\">·<a title=\"$v[1]\" href=\"$v[2]\" target=\"_blank\">$v[1]</a></div>
";
}
}

0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: