1

我一直在研究一些 RSS抓取工具,它可以解析来自多个来源的数据。也就是说,所有这些来源都有自己的 RSS 描述实现。

特别是,使用 CDATA 标记将描述写在 like 上,例如

<![CDATA[
<p align=justify><font face="verdana, arial, helvetica, sans-serif" size=1>
<font color=#004080></font>
SOME TEXT GOES HERE 
 </font></p>
]]>

但是,如果我尝试使用 SimplePie 获取项目描述,则会得到此输出

<div><p align="justify"></p></div>

我正在使用这个 php 脚本来完成这一切

 foreach($feed->get_Items() as $item)
 {
        
        $title = $item->get_title();
         $description = $item->get_description();
        //some other stuff
 }

现在好的部分

提要上的标题也是这样的

<title>
  <![CDATA[ 
     Nice title
  ]]>
</title>

而且......它的工作原理!

如何获取提要的描述?我几乎什么都试过了!

谢谢!


在巨大的位图中搜索第一个设置位

面试题:

在一个可以容纳百万辆汽车的停车位中,您需要找到一个免费的停车位。停车位可以在哪里没有条件,即停车场可以有多个入口,在入口附近找到一个停车位等都没有关系。问题是应该使用什么样的数据结构以及各种操作的复杂性。

我建议使用百万位的位数组,0/1 用于占用/空闲槽,因此为了找到空闲点,问题转化为查找第一个设置位。不要假设那里有多少辆车等,即位数组可以是稀疏的或密集的。

在巨大的位图中找到一组位的最快方法是什么?我确实建议将二进制搜索 + 每个单词的高效 ffs() 作为方案。

4

1 回答 1

3

get_description ()get_content()方法都对原始数据进行清理,但您可以使用get_item_tags ()方法将其原封不动地提取出来,如下所示:

$desc_tags = ($item->get_item_tags('', 'description')); // empty namespace is RSS2.0
if ($desc_tags) {
    print $desc_tags[0]['data'];
}

唯一需要注意的是,当get_contentorget_description将尝试检测命名空间时,您必须将其提供给get_item_tags,您可以在此处查看命名空间常量。如果您事先知道提要格式,那应该不是问题,否则您可能需要进行反复试验get_description

于 2012-07-20T15:39:32.983 回答