我有以下字符串:
$linkString="The Following is a link to google <a class='links' href='http://google.com'>
http://google.com
</a>
";
在此字符串中,新行中的html链接的超文本。我想删除并可能从字符串中替换所有链接(其html标记和超文本),所以我尝试了以下内容:
<?php
$linkString="The Following is a link to google <a class='links' href='http://google.com'>
http://google.com
</a>
";
//Remove link tag:
echo preg_replace('/<[^>]*>/','',$linkString);
但是,上面的例子打印出来:
The Following is a link to google
http://google.com
这是一个在线演示:http://codepad.org/whw81bwa
我想知道能够删除所有链接(标记和超文本)的正则表达式
答案 0 :(得分:2)
不要使用正则表达式,而是有效地使用DOM为您执行此操作。
$doc = new DOMDocument;
@$doc->loadHTML($html); // load the HTML data
$xpath = new DOMXPath($doc);
foreach ($xpath->query('//a') as $tag) {
$tag->parentNode->removeChild($tag);
}
echo $doc->saveHTML();
答案 1 :(得分:0)
以下正则表达式解决了这个问题:
/(?i)<a([^>]+)>(.+?)<\/a>/'
所以,
<?php
$linkString="The Following is a link to google <a class='links' href='http://google.com'>
http://google.com
</a>
";
//Remove link tag:
echo preg_replace('/(?i)<a([^>]+)>(.+?)<\/a>/','A Hidden Link',$linkString);