如何从RSS提要中删除多个换行符?

时间:2011-09-22 22:40:50

标签: php

如何从RSS Feed中删除多个<br>标记?我尝试了这两个,但它没有做任何改变。

str_replace("<br/><br/>","&",$entry->description); 
str_replace("<br><br>","&",$entry->description); 
str_replace("&lt;br/&gt;&lt;br/&gt;","&",$entry->description); 
str_replace("&lt;br /&gt;&lt;br /&gt;","&",$entry->description); (with space)
Here is a sample

This is copied from feedburn RSS&lt;br /&gt;&lt;br /&gt;with view page source.

3 个答案:

答案 0 :(得分:0)

它可能会被逃脱,所以也许试试:

$formatted = $entry->description
$formatted = str_replace("&lt;br/&gt;&lt;br/&gt;","&",$formatted); 
$formatted = str_replace("&lt;br /&gt;&lt;br /&gt;","&",$formatted);

print($formatted)

确保打印/ echo $格式化。 str_replace不是破坏性函数,因此您需要使用其返回值。

答案 1 :(得分:0)

在DOM Parser中打开它,查找brnextSibling(或previousSibling如果反向迭代)是另一个br元素的br元素(您可以重复)这适用于直接兄弟姐妹的多个$dom = new DOMDocument; $dom->loadHTML($html); $elements = $dom->getElementsByTagName('br'); $length = $elements->length; while ($length--) { $elem = $elements->item($length); $prevSibling = $elem->previousSibling; if ($prevSibling->nodeType == 1 AND $prevSibling->tagName == 'br') { $parent = $elem->parentNode; $parent->removeChild($elem); $parent->removeChild($prevSibling); $length--; } } 元素。然后删除它们。

while() { ... }

CodePad

我选择反向迭代以保存用于增量编号的另一个变量。

我不得不使用带有索引的foreach(),因为{{1}}会保存对我要移除的节点的引用,这会导致错误。

答案 2 :(得分:-1)

如果要连续替换多个,可以这样做:

<?php
    $entry = "Hello <br><br><br> my <br /><br /> dear <br/><br/><br/> friend";
    $formatted = preg_replace('/(<br ?\/?>)+/',"<br />",$entry);
    var_dump($formatted);
?>

这将返回:

'Hello <br /> my <br /> dear <br /> friend'