使用htmlspecialchars_decode和preg_replace解码特殊标记之间的字符串

时间:2012-06-13 08:18:45

标签: php html string replace special-characters

我正在尝试使用htmlspecialchars_decodepreg_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也没用了!

1 个答案:

答案 0 :(得分:2)

您必须转义方括号,否则[link]将被解释为包含字母l, i, n, k的字符集。

如果您不确定要逃避的内容,则应使用preg_quote()

preg_replace('/' . preg_quote('[link]', '/') . '(.*?)' . preg_quote('[/link]', '/') . '/eisU', ...

这也会这样做:

/\[link\](.*)\[\/link\]/eisU