如何从RSS Feed中删除多个<br>
标记?我尝试了这两个,但它没有做任何改变。
str_replace("<br/><br/>","&",$entry->description);
str_replace("<br><br>","&",$entry->description);
str_replace("<br/><br/>","&",$entry->description);
str_replace("<br /><br />","&",$entry->description); (with space)
Here is a sample
This is copied from feedburn RSS<br /><br />with view page source.
答案 0 :(得分:0)
它可能会被逃脱,所以也许试试:
$formatted = $entry->description
$formatted = str_replace("<br/><br/>","&",$formatted);
$formatted = str_replace("<br /><br />","&",$formatted);
print($formatted)
确保打印/ echo $格式化。 str_replace
不是破坏性函数,因此您需要使用其返回值。
答案 1 :(得分:0)
在DOM Parser中打开它,查找br
(nextSibling
(或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() { ... }
我选择反向迭代以保存用于增量编号的另一个变量。
我不得不使用带有索引的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'