PHP生成的有线HTML DOM
我正在使用此代码检索博客的rss提要PHP生成的有线HTML DOM,php,html,Php,Html,我正在使用此代码检索博客的rss提要 <?php $xml = ("https://serembangirl.wordpress.com/feed/"); $xmlDoc = new DOMDocument(); $xmlDoc->load($xml); $x=$xmlDoc->getElementsByTagName('item'); for ($i=0; $i<=5; $i++) { $item_title=$x->item($i)->
<?php
$xml = ("https://serembangirl.wordpress.com/feed/");
$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);
$x=$xmlDoc->getElementsByTagName('item');
for ($i=0; $i<=5; $i++) {
$item_title=$x->item($i)->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$item_desc=$x->item($i)->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
$item_content=$x->item($i)->getElementsByTagName('encoded')->item(0)->nodeValue;
?>
<a href='#'>
<div class="card">
<div class='inner'>
<p class='title'>
<?php echo $item_title;?>
</p>
<p class='desc'> <?php echo $item_desc; ?> </p>
</div>
</div>
</a>
<?php } ?>
对于上述代码,假定应该包装,但它产生了以下结果:
解决这个问题,我真是摸不着头脑。我认为不建议使用锚定标记内的div。检查PHP生成的实际源代码。它将把div放在a里面 在a元素内不允许使用div、p或其他块级元素。浏览器试图修复您的文档 提示1 使用XPath从DOM获取数据
$xpath = new DOMXPath($xmlDoc);
foreach ($xpath->evaluate('//item') as $item) {
$item_title = $xpath->evaluate('string(title)', $item);
// ...
}
提示2
如果将数据作为HTML源输出,请不要忘记转义
...
<p class='title'>
<?php echo htmlspecialchars($item_title); ?>
</p>
...
我可以转义标题,但是$content呢?去掉标签,也转义它。或者将其加载到DOM中,并使用白名单对其进行清理。