我有以下字符串,它是我认为我需要执行preg_replace
的更大字符串的一部分。
> <a href=''>About Us</a>
较大的字符串是:
<a href='http://ecolution.dev'>Home</a> > <a href=''>About Us</a> > Meet the Directors
现在我可以轻松地将第一个字符串与/ .*?<\/a>\s+/
匹配 - 这样可以正常工作。
我实际需要做的是从字符串中删除 > <a href=''>
以及</a>
。因此,纯文本留在较大的字符串中。
我可以在多个preg_replace
来电中分别删除2个部分,但这对我来说似乎不是最佳选择。
有没有办法在 > <a href=''>
和</a>
之间获取任何文字,然后将其作为纯文字输出,以便 > <a href=''>About Us</a>
成为About Us
?
修改
我应该早些提到这个。这是ExpressionEngine中动态创建的面包屑系统。有些条目为空href
,因此<a href=''>abc</a>
并且这些条目需要删除a
个标记,因此为什么要尝试匹配上面的字符/字符串,以便它只是纯文本
<a href='http://ecolution.dev'>Home</a> > <a href=''>About Us</a> > Meet the Directors
会变成
<a href='http://ecolution.dev'>Home</a> > About Us > Meet the Directors
答案 0 :(得分:1)
这将删除任何具有空href的锚链接的标记:<a href=''>text</a>
:
$html = "<a href='http://ecolution.dev'>Home</a> > <a href=''>About Us</a> > Meet the Directors";
$result = preg_replace("/<a href=''>(.*?)<\/a>/", "$1", $html);
// Result = "<a href='http://ecolution.dev'>Home</a> > About Us > Meet the Directors"
在'$1'
的第二个参数中使用preg_replace
,我们可以放回第一个匹配的字符串(来自preg_replace
的第一个参数)。