2012-03-27 10 views
2

この質問は、何度もstackoverflowで尋ねられました。 答えは常にの例ではなく、より良い選択肢ののない「正規表現を使用しないでください」と思われます。REGEX/PHPを使用してタグとコンテンツを削除します

これは検証のためではなく、実際のストリッピングの後に行われます。

scriptタグの間にある可能性のあるコンテンツをすべて除外する必要があります。

これを行うには、最高のREGEX方法に関する提案はありますか?

EDIT:PREEMPTIVE RESPONSE:PHPのHTML PurifierもDOMXPath機能も使用できません。

+2

多分関連するhttp://stackoverflow.com/questions/2505957/using-regex-to-remove-script-tags –

+0

この非常に人気のあるスレッドを読むことを検討するhttp://stackoverflow.com/questions/1732348/regex-match -open-tags-except-xhtml-self-contained-tags – Tchoupi

答えて

3

HTMLのREGEXが悪いとみなされるのは、(通常)簡単に壊れる可能性があり、繰り返しパターンを再考する必要があるからです。例えばあなたが

<script>.+</script> 

に一致している場合それはあなたが

<script.+/script> 

を使用する場合、それはまた、簡単に

< script>... 
で破壊することができ

<script type="text/javascript"> 

で容易に破断することができ

これで終わりはありません。指定した方法を使用できない場合は、strip_tagsを試すことができますが、ホワイトリストをブラックリストではなくパラメータとしてにすると、許可する1つのタグをすべて手動で許可する必要があります。

他のすべてを失敗した場合、あなたは正規表現に頼ることができ、私が思い付いたことは、この

<\s*script.*/script> 

あるしかし、私はこの辺りで誰かが、おそらく来て、あまりにもそれを破ることができるに違いありません。

+0

ありがとう!上で述べたように、それは検証ではなく、すでに存在するコードの削除です。 – kylex

関連する問題