PHP生成的有线HTML DOM

时间:2014-12-29 10:30:18

标签: php html

我正在使用此代码检索博客的RSS Feed

<?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 } ?>

使用上面的代码,据说应该包装但是它产生了这个:

http://i.imgur.com/YspeRe3.png

我真的摸不着头脑。

2 个答案:

答案 0 :(得分:0)

我认为不建议使用锚标记中的div。

答案 1 :(得分:0)

检查PHP生成的实际源代码。它将在div内有a

divp或其他块级元素不允许在a元素中。浏览器尝试“修复”您的文档。

提示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>
...