• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP 正则表达式分析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 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>
    ";
    }
    }
    您可能感兴趣的文章:
    • php XMLWriter类的简单示例代码(RSS输出)
    • 用PHP读取RSS feed的代码
    • php生成RSS订阅的方法
    • PHP调用Twitter的RSS的实现代码
    • 利用PHP和AJAX创建RSS聚合器的代码
    • php实现的RSS生成类实例
    • PHP生成RSS文件类实例
    • php生成rss类用法实例
    • php实现将数组转换为XML的方法
    • PHP处理数组和XML之间的互相转换
    • php的SimpleXML方法读写XML接口文件实例解析
    • php制作基于xml的RSS订阅源功能示例
    上一篇:JavaScript 去前后全脚半脚空格的正则
    下一篇:关于内容的分离,正则抽出图片(一定要加精哦)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP 正则表达式分析RSS PHP,正则,表达式,分析,RSS,