如何从网页中删除连续的链接?

时间:2011-08-18 17:14:57

标签: php regex

我希望删除网页上的连续链接

这是一个示例

<div style="font-family: Arial;">
    <br>
    &nbsp;
    <a href="http://google.com">AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</a>
    &nbsp;
    <a href="http://google.com">BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</a>
    Google is a search
    <a href="http://www.google.com">engine</a>

在上面的html我想删除前两个A标签而不是第三个标签(我的脚本应该只删除连续的标签)

1 个答案:

答案 0 :(得分:2)

不要使用正则表达式。它们非常强大,但不能用于找到这种“连续”标签。

我建议你使用DOM。然后,您可以将HTML作为树浏览。 这是一个例子(未经测试):

$doc = new DOMDocument();
// avoid blank nodes when parsing
$doc->preserveWhiteSpace = false;
// reads HTML in a string, loadHtmlFile() also exists
$doc->loadHTML($html);
// find all "a" tags
$links = $doc->getElementsByTagName('a');
// remove the first link
$parent = $links->item(0)->parentNode;
$parent->removeChild($links->item(0));
// test the node following the second link
if ($links->item(1)->nextSibling->nodeType != XML_TEXT_NODE) {
    // delete this node ...
}
// print the modified HTML
// See DOMDocument's attributes if you want to format the output
echo $doc->saveHTML();