我想用正則過濾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" >部分
本人能力不足只解釋到這裏了。有關回溯的問題之後再討論了。