【问题标题】:PHP getting page title of XML Feed [duplicate]PHP获取XML Feed的页面标题[重复]
【发布时间】:2013-09-09 10:46:52
【问题描述】:

我正在尝试从 XML Feeds 中获取页面标题。

我以http://feeds.gawker.com/lifehacker/full 为例,使用下面的代码可与其他网站一起使用,但对于Lifehacker,它似乎忽略了关闭</title> 标记,并且console.log 显示了xml 的全部内容开场后<title>

function getTitle($Url){
        $str = file_get_contents($Url);
        if(strlen($str)>0){
            preg_match("/\<title\>(.*)<\/title\>/",$str,$title);
            return $title[1];
        }
    }

$feed = 'http://feeds.gawker.com/lifehacker/full';
$pagetitle = getTitle($feed);

谢谢

【问题讨论】:

    标签: php xml xml-parsing


    【解决方案1】:

    不要使用正则表达式来解析 XML 或 HTML 页面。试试这个。更简单更整洁:

    $feed = simplexml_load_file('feed.xml');
    
    var_dump((string)$feed->channel->title);
    

    【讨论】:

    • 这行得通,非常感谢!
    • @Beardy 如果您喜欢这个答案,请接受 ;)
    • 我不得不等待一段时间才能接受 ;) 现在完成了
    【解决方案2】:

    我个人建议不要使用正则表达式来解析 XML 文档。它根本不适合那个。

    请查看SimpleXML 或DOM

    现在,你的正则表达式的问题在于星默认是贪婪的

    preg_match("/\<title\>(.*?)<\/title\>/",$str,$title);
    

    会得到你所追求的。但请记住,您的代码只会返回文档中的第一个 title 元素。

    在这个优秀的参考网站上了解更多关于正则表达式的信息

    http://www.regular-expressions.info/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 2018-12-30
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      相关资源
      最近更新 更多