繁体   English   中英

PHP正则表达式-删除字符串周围的空标签

[英]php regex - remove empty a tag around string

我有以下字符串,它是一个较大的字符串的一部分,我认为我需要在其上执行preg_replace

&nbsp;>&nbsp;<a href=''>About Us</a>

较大的字符串是:

<a href='http://ecolution.dev'>Home</a> &nbsp;>&nbsp;<a href=''>About Us</a> &nbsp;>&nbsp;Meet the Directors

现在,我可以很容易地将第一个字符串与/&nbsp;.*?<\\/a>\\s+/匹配。

我实际上需要做的是从字符串以及</a>删除&nbsp;>&nbsp;<a href=''> 因此,纯文本保留在较大的字符串中。

我可以在多个preg_replace调用中分别删除这两个部分,但这似乎并不是我的最佳选择。

有没有一种方法可以获取&nbsp;>&nbsp;<a href=''></a>之间的任何文本,然后将其输出为纯文本,以便&nbsp;>&nbsp;<a href=''>About Us</a>变成About Us

编辑

我应该早些提到这一点。 这是ExpressionEngine内部动态创建的面包屑系统。 某些条目空href ,所以<a href=''>abc</a>和那些条目需要有自己的a标签去除,因此为什么试图匹配上述字符/字符串,以便它只是纯文本

<a href='http://ecolution.dev'>Home</a> &nbsp;>&nbsp;<a href=''>About Us</a> &nbsp;>&nbsp;Meet the Directors

会成为

<a href='http://ecolution.dev'>Home</a> &nbsp;>&nbsp;About Us &nbsp;>&nbsp;Meet the Directors

这将删除具有空href: <a href=''>text</a>任何锚链接的标签:

$html = "<a href='http://ecolution.dev'>Home</a> &nbsp;>&nbsp;<a href=''>About Us</a> &nbsp;>&nbsp;Meet the Directors";
$result = preg_replace("/<a href=''>(.*?)<\/a>/", "$1", $html);
// Result = "<a href='http://ecolution.dev'>Home</a> &nbsp;>&nbsp;About Us &nbsp;>&nbsp;Meet the Directors"

preg_replace的第二个参数中使用'$1'允许我们放回第一个匹配的字符串(从我们的preg_replace的第一个参数开始)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM