在PHP中使用正则表达式删除空白标签

时间:2018-08-14 18:21:55

标签: php regex

是否可以使用正则表达式删除某些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会容易得多。

1 个答案:

答案 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