使用REGEX/PHP删除中间的标记和内容

使用REGEX/PHP删除中间的标记和内容,php,regex,Php,Regex,我在stackoverflow上看到过好几次有人问这个问题,但都没有一个非常好的答案。 答案似乎总是“不要使用正则表达式”,没有更好的选择 出于我的目的,这不是为了验证,而是在事实剥离之后 我需要去掉所有script标记,包括它们之间可能存在的任何内容 关于最好的正则表达式方法有什么建议吗 编辑:抢先响应:我不能使用HTML净化器,也不能使用PHP的DOMXPath功能。HTML的正则表达式之所以被认为是邪恶的,是因为它(通常)很容易被破坏,迫使您反复反思您的模式。例如,如果您匹配 <sc

我在stackoverflow上看到过好几次有人问这个问题,但都没有一个非常好的答案。 答案似乎总是“不要使用正则表达式”,没有更好的选择

出于我的目的,这不是为了验证,而是在事实剥离之后

我需要去掉所有
script
标记,包括它们之间可能存在的任何内容

关于最好的正则表达式方法有什么建议吗


编辑:抢先响应:我不能使用HTML净化器,也不能使用PHP的DOMXPath功能。

HTML的正则表达式之所以被认为是邪恶的,是因为它(通常)很容易被破坏,迫使您反复反思您的模式。例如,如果您匹配

<script>.+</script>

但是我敢打赌,这里的人可能也会来破坏它。

也许相关的考虑阅读这个非常流行的线程谢谢!正如我上面所说,这不是验证,而是删除已经存在的代码。
<script type="text/javascript">
<script.+/script>
< script>...
<\s*script.*/script>