【发布时间】:2014-03-05 21:17:11
【问题描述】:
我正在使用以下代码从 PHP 中的 HTML 文本块中过滤掉 url。
preg_replace('#<a(?![^>]+?href="?http://keepthisdomain.com/foo/bar"?).*?>(.*?)</a>#i', '\1', $text);
它旨在替换所有不匹配指定 url 模式的 url。但是我确实想包含所有设置了属性 rel="shadowbox[a]" 的标签。
如何修改这个 preg_replace 来做到这一点?
【问题讨论】:
-
澄清一下,这是一个匹配:(1)
a标签与指定的 URL 模式 和rel="shadowbox[a]"属性,或 (2)a标签使用指定的 URL 模式或rel="shadowbox[a]"属性? -
P.S.对于the reasons set forth in this answer,你最好不要使用正则表达式,而是使用解析器。
-
这是一个带有 rel="shadowbox[a]" 属性的标签。我想保留这些网址(以及链接到keepthisdomain.com/foo/bar 的所有超链接)
标签: php regex preg-replace