我想用正则过滤JS里代码,可是老是写很差!javascript
好比 <script>function tt () {xffdfdfdfdfd}</script> php
把全部的
<script>function tt () {xffdfdfdfdfd}</script>
都删除掉html
1 |
<?php |
2 |
$html = '777444553sdg<script>function tt () {xffdfdfdfdfd}</script>gsgsdasdaad124' ; |
3 |
$search = "/<script[^>]*?>.*?<\/script>/si" ; |
4 |
$rr = preg_replace( $search , ' ' , $html ); |
5 |
echo $rr ; |
6 |
?> |
正则表达式代码:java
/<script[^>]*?>.*?<\/script>/si
正则表达式
正则表达式教程:(你只想要结果,如下内容能够不用看了)post
其实这个正则很简单spa
为了匹配<script>。。</script>内容我第一时间就想到这样写code
/<script>.+<\/script>/sihtm
相信刚刚接触正则的都会这样写。教程
由于正则的贪婪性。会致使这样的字符串也会被匹配,
如: <script>……a……</script>……<div>……</div>……<script>……b……</script>
后面我这样写
/<script>.*?<\/script>/si
已经能够匹配了。
还有遗漏,就是 <script type="text/javascript" >这种状况没有考虑
后来看了PHP手册才知道还要这样写
/<script[^>]*?>.*?<\/script>/si
[^>]*?
是什么意思呢?
[^>] 是对>取反,也就是说,取一个字符不为">" 的字符
*?就是取0次到无限次。
整个来讲是: 取0个到无限个不为“>”的字符。
对于以上例子是匹配 <script type="text/javascript" >部分
本人能力不足只解释到这里了。有关回溯的问题之后再讨论了。