如何在PHP中使用正则表达式删除链接?

时间:2015-01-16 04:40:58

标签: php regex

我想删除vnexpress.net属性中与此域href匹配的所有链接。 这是一个链接示例:

<a href="http://vnexpress.net/whatever">whatever</a>

这是我的代码:

$contents = preg_replace('/<a\s*href=\"*vnexpress*\"\s(.*)>(.*)<\/a>/', '', $data->content);

请帮帮我!非常感谢你!

2 个答案:

答案 0 :(得分:2)

您已在此处要求提供正则表达式,但它不是解析HTML的正确tool

$doc = new DOMDocument;
$doc->loadHTML($html); // load the html

$xpath = new DOMXPath($doc);
$links = $xpath->query("//a[contains(@href, 'vnexpress.net')]");

foreach ($links as $link) {
   $link->parentNode->removeChild($link);
}

echo $doc->saveHTML();

答案 1 :(得分:0)

试试这个:

$re = "/<a[^>]+href=\"[^\"]*vnexpress.net[^>]+>(.*)<\\/a>/m";
$str = "<a id=\"\" href=\"http://vnexpress.net/whatever\">whatever <b>sss</b> </a>\n<a id=\"\" href=\"http://new.net/whatever\">whatever</a>\n";
$subst = "$1";

$result = preg_replace($re, $subst, $str);

Live demo