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

一般に、HTML の解析に RegEx を使用することはお勧めできません。特定の問題を解決するのに 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 に答える