【发布时间】:2018-10-19 08:12:24
【问题描述】:
我有一个非常烦人的问题。我正在获取 RSS 流。
我需要获取 标记内的图像。但如您所见,RSS 流并未优化。
查看这个项目示例:
<item>
<title>Element !</title>
<link>
link</link>
<description><div class="field field-name-field-image field-type-image field-label-hidden"><div
class="field-items"><div class="field-item even" rel="og:image rdfs:seeAlso"
resource="http://www.test.com/sites/default/files/field/image/image.jpg"><img typeof="foaf:Image"
src="http://www.test.com/sites/default/files/field/image/image.jpg" width="800" height="571"
alt="" /></div></div></div><div class="field field-name-body
field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item
even" property="content:encoded"><p>Bien que le pain reste <strong>un aliment
emblématique de la culture française</strong>, il n’échappe pas aux évolutions des modes de vie. Selon une
étude du Crédoc, publiée en 2017 par l’observatoire du pain, ce dernier subi un effet de génération négatif. Au
même âge, les nouvelles générations consommeraient moins de pain que les anciennes. Cependant, en analysant d’un
peu plus près leurs habitudes, il a été constaté qu’ils consommeraient plus de pain sous forme de sandwich ou
hamburger que les générations précédentes.</p>
<p>C’est donc pour répondre à une demande croissante de pain moelleux, type pain de mie, que nous avons
imaginé « Le Moelleux Tradition ». <strong>Élaboré par le MOF, Jean-Yves Guinard</strong>, sa
recette, n’est réalisable que sur la base exclusive de farine de tradition Française « La Croquise ». Mis au
point selon <strong>un procédé unique</strong>, ce pain moelleux, à la recette innovante, se
caractérise par <strong>une croûte très fine et une mie extrêmement moelleuse</strong>.</p>
<p><strong>Sans additif, sucre ni matière grasse</strong>, sa composition des plus salutaire,
saura séduire tous les clients en quêtes d’authenticité et de naturel. En effet, suite aux différentes crises
sanitaires et médiatiques, les consommateurs se disent de plus en plus inquiets quant aux ingrédients qu’ils
mangent. C’est pourquoi, ils sont plus impliqués et regardants quant aux composants de leurs aliments.</p>
<p>Dans une volonté constante d’accompagner au plus près nos artisans boulangers, nous avons conçu,
spécialement pour l’occasion, une barquette des plus attrayantes. Inédite en boulangerie artisanale, cette
barquette aux couleurs de la Croquise mettra en avant ce nouveau pain et lui apportera un maximum de visibilité.
</p>
<p>Pour télécharger notre argumentaire de vente, cliquez sur le lien ci-dessous :<br /><a href="http://www.test.com/sites/all/themes/nexus/images/pdf-telecharger/pdf.pdf"
target="_blank"><strong><u>Télécharger l'argumentaire</u></strong></a></p>
</div></div></div><ul class="links inline"><li class="addtoany first
last"><span><span class="a2a_kit a2a_kit_size_32 a2a_target addtoany_list" id="da2a_1">
<a class="a2a_button_facebook"></a>
<a class="a2a_button_twitter"></a>
<a class="a2a_button_google_plus"></a>
<a class="a2a_dd addtoany_share_save" href="https://www.addtoany.com/share#url=http%3A%2F%2Fwww.test.com%2Fcontent%2Ftest&amp;title=La%20Croquise%20fait%20sa%20rentr%C3%A9e%20avec%20son%20Moelleux%20Tradition%20%21"></a>
</span>
<script type="text/javascript">
<!--//--><![CDATA[//><!--
if(window.da2a)da2a.script_load();
//--><!]]>
</script></span></li>
</ul>
</description>
<pubDate>Thu, 27 Sep 2018 13:08:31 +0000</pubDate>
</item>
我有这个代码用于浏览我的 RSS:
<?php
$url = "myfile.xml";
$rss = simplexml_load_file($url);
foreach ($rss->channel->item as $item) {
// echo "<pre>".print_r(htmlspecialchars($item->description), true)."</pre>";
var_dump($item->xpath('description/typeof="foaf:Image"'));
// echo "<pre>".print_r($item->xpath("typeof=\"foaf:Image\""), true)."</pre>";
$i++;
if ($i < 4) {
$itemsReturned[] = array(
$item,
);
}
}
?>
我(我想我)需要使用 **typeof=\"foaf:Image** 来获取我的描述标签内的图像,但我没有任何回报,可能是由于这个标签中的数据格式。
【问题讨论】:
-
你的
description元素在这里只包含text,所以你不能去里面寻找elements。您需要先使用html_entity_decode或类似的东西对其进行解码。 -
我尝试使用 htmlspecialchars,但这部分没有被检测为 xml
-
你不能一口气做到这一点。您需要先获取描述元素的内容,解码 that,然后继续在其中查找您要查找的元素。
-
好的,但是我该怎么做呢?
-
嗯,你甚至还没有告诉我们你是如何解析这个以将内容放入你的
$rss变量中的……(该描述的内容可能不一定是有效的 XML 开头,因此您可能需要为 this 部分切换到 HTML 解析器。)