0

很久以前我还没有玩过 PHP 和正则表达式,我想找到一个可以完成以下工作的正则表达式。

我的字符串包含:

<pre code="...">some piece of code</pre> other non code content <pre code="...">some piece of code</pre> other non code content...

目标是替换所有<pre>code</pre> by&

代码
...`

"code"里面的地方<pre>&</pre>也应该用htmlspecialchars...

我已经尝试了一些正则表达式,但没有成功。

任何想法?

谢谢

4

1 回答 1

1

通常,使用 RegEx 解析 HTML 是一个坏主意。有很多简单的场景,RegEx 足以解决特定问题,这很棒。

我会争辩说,在您的情况下,使用 RegEx 是一个坏主意,它不会涵盖所有情况,而且可能不安全。您可能正在尝试防止 XSS 漏洞,而基于 RegEx 的解决方案总是容易出错。

但为了完整起见:

preg_replace_callback(
    '/(<\\s*pre(?:\\s[^>]+)?>)(.*?)(<\\/\s*pre\s*>)/',
    function ($match) {
        return $match[1].htmlspecialchars($match[2]).$match[3];
    },
    $html
);
于 2013-10-06T20:20:45.307 回答