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


How can i remove link using regex in php?

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

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

这是我的代码:

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

请帮帮我!非常感谢!。

您在这里要求使用正则表达式,但它不是解析 HTML 的正确工具

$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();

试试这个:

$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);

现场演示