为了账号安全,请及时绑定邮箱和手机立即绑定

使用 regex/php 删除文本中的嵌套链接

使用 regex/php 删除文本中的嵌套链接

PHP
青春有我 2021-10-15 14:47:14
我有一些带有许多链接的文本,其中一些带有嵌套链接。我试图创建一个正则表达式来删除链接锚内的任何链接,留下锚文本。我的想法是使用正则表达式来查找所有文本锚点并将它们替换为相同的文本并删除标签。然而我达不到。例子:<p>Any text <a href="#">a correct link</a> more text <a href="#">some <a href="#">word</a>.</a><p>预期结果<p>Any text <a href="#">a correct link</a> more text <a href="#">some word.</a><p>我正在尝试的是它如下:$pattern="/<a.*>([a-zA-Z ].*)<\/a>/";preg_match_all ($pattern , $text, $matches);foreach($matches as $match){    $text=str_replace($match[0],strip_tags($match[0],'<b>'),$text);}
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

最后我以这种方式解决了


    $pattern = '/<a.*>([a-zA-Z0-9&#;\s]*<a.*>[a-zA-Z0-9&#;\s]*<\/a>[a-zA-Z0-9&#;\s]*)<\/a>/m';

preg_match_all($pattern, $text, $matches, PREG_SET_ORDER, 0);


foreach($matches as $match)

{


    $text = str_replace($match[1], strip_tags($match[1]), $text);


}


return $text;

老实说,我不认为这是最好的方法,但它在大多数情况下都有效。


感谢您的提示 Mohammad Bagheri。


查看完整回答
反对 回复 2021-10-15
  • 2 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信