php regex - 删除字符串

时间:2016-03-11 10:15:07

标签: php regex optimization

我有以下字符串,它是我认为我需要执行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+/匹配 - 这样可以正常工作。

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

我可以在多个preg_replace来电中分别删除2个部分,但这对我来说似乎不是最佳选择。

有没有办法在&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

1 个答案:

答案 0 :(得分:1)

这将删除任何具有空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"

'$1'的第二个参数中使用preg_replace,我们可以放回第一个匹配的字符串(来自preg_replace的第一个参数)。