PHP - 将代码段从字符串转换为html字符

时间:2011-04-02 08:20:14

标签: php html string

我有这样的字符串:

<a href="http://google.com"> link </a>
[code lang="html" anotherargument="foo"...]
<a href="http://google.com"> link </a>
[/code]

如何将[code...][/code]之间的代码转换为HTML字符?

像这样:

<a href="http://google.com"> link </a>
[code lang="html" anotherargument="foo"...]
&lt;a href=&quot;http://google.com&quot;&gt; link &lt;/a&gt;
[/code]

3 个答案:

答案 0 :(得分:1)

我认为htmlspecialcharshtmlentities具有您正在寻找的功能。两者都将字符转换为HTML实体。

答案 1 :(得分:1)

你可以使用带有回调的正则表达式 - 所以匹配代码标签之间的内容,然后通过运行函数替换。

像这个未经测试的代码:

$str = preg_replace_callback('/(\[code.+?\])(.+?)(\[\/code\])/', create_function(
            '$m',
            'return $m[1] . htmlentities($m[2]) . $m[3];'
        ),$str)

答案 2 :(得分:1)

试试这个

preg_match_all('`\[code[^\]]*+]([^\[]*+)\[/code\]`i', $html, $matches, PREG_SET_ORDER);

foreach ($matches as $match) {
    $html = str_replace($match[1], htmlentities($match[1]), $html);
}