我正在尝试使用htmlspecialchars_decode
和preg_replace
对两个特殊标记之间的字符串进行解码,例如我的原始字符串是这样的:
other strings...[link]<a href="http://example.com" target="_blank">example</a>[/link]other strings...
我需要将[link][/link]
之间的所有内容转换为html原始代码。测试了这个:
$str = preg_replace("/[link](.*)[\/link]/eisU", "htmlspecialchars_decode('$1')", $str);
没有工作!我搜索谷歌和SO也没用了!
答案 0 :(得分:2)
您必须转义方括号,否则[link]
将被解释为包含字母l, i, n, k
的字符集。
如果您不确定要逃避的内容,则应使用preg_quote()
:
preg_replace('/' . preg_quote('[link]', '/') . '(.*?)' . preg_quote('[/link]', '/') . '/eisU', ...
这也会这样做:
/\[link\](.*)\[\/link\]/eisU