2015-01-16 49 views
1

我想要删除所有与此域vnexpress.net相匹配的链接。href属性。 这是一个链接例如:如何在php中使用正则表达式删除链接?

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

这是我的代码:

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

请帮帮我!非常感谢!。

+0

什么正则表达式你有那么远,并给它什么样的错误? – Nerixel

+1

'href =“\ K [^”] * \ bvnexpress \ .net [^“] *' –

+0

@AvinashRaj我尝试使用您的代码,但它不起作用 –

回答

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

+0

太棒了!它的工作。非常感谢你! –

+0

@Duy Nguyen如果这答案适合您的条件,那么您可以接受此答案。 –

+0

此模式在这种情况下将失败(因为使用'。*'):'texttext' –