是否可以使用正则表达式删除某些HTML代码中的所有空白<a>
标签?
例如,
<a href="this-goes-somewhere.com" rel="external"></a>
<a href="go-to-that-page.html"></a>
<a href="this-should-stay.html">This Should Stay</a>
<a href="this-should-stay.html"><img src="kitten.jpg"/></a>
在这种情况下,正则表达式应删除前两个链接。我使用<a(.*?)></a>
来实现这一点,但它与所有四个链接都匹配。
任何帮助将不胜感激。
我认为?
的意思是尽量减少字符数。
更新:HTML不会无效,我会自己生成。我认为在这种特殊情况下使用Regex会容易得多。
答案 0 :(得分:2)
我修改了您的正则表达式,以便通过将.*
更改为[^<]
:https://regex101.com/r/nhu2T7/2
此PHP代码将运行该正则表达式并打印出结果:
<?php
$re = '/(<a[^<]*?><\/a>)/m';
$str = '<a href="this-goes-somewhere.com" rel="external"></a>
<a href="go-to-that-page.html"></a>
<a href="this-should-stay.html">This Should Stay</a>
<a href="this-should-stay.html"><img src="kitten.jpg"/></a>';
echo preg_replace($re, '', $str);
结果:
<a href="this-should-stay.html">This Should Stay</a>
<a href="this-should-stay.html"><img src="kitten.jpg"/></a>
在以下位置执行:http://sandbox.onlinephpfunctions.com/code/dd2b986b80ac6a2c7fd173f65070dd2ce1d78d3c