這次帶給大家在PHP裡使用正規的效率貪婪、非貪婪與回溯詳解(附程式碼),在PHP裡使用正規的效率貪婪、非貪婪與回溯的注意事項有哪些,下面就是實戰案例,一起來看一下。
先掃盲什麼是正規表示式的貪婪,什麼是非貪婪?或說什麼是匹配優先量詞,什麼是忽略優先量詞?
好吧,我也不知道概念是什麼,來舉例。
某同學想過濾之間的內容,那是這麼寫正規以及程式的。
$str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪
看起來,好像沒什麼問題,其實不然。若
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>';
那麼經過上面的程式處理,其結果為
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>'; $str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪 print_r($str); //$str 输出为 <script>alert(document.cookie)</script>
仍然達不到他想要的效果。上面的就是非貪婪,也有的叫惰性。其標誌非貪婪的標識為量數元字元後面加? ,例如 +?、*?、??(比較特殊,以後的BLOG中,我會寫到)等。即標識非貪婪,如果不寫?就是貪婪。例如
$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>'; $str = preg_replace('%<script>.+</script>%i','',$str);//非贪婪 print_r($str); //$str 输出为熱門教學更多>
php入門教程之一週學會PHP4257397 JAVA 初級入門影片教學2475697 小甲魚零基礎入門學習Python影片教學503649 PHP 零基礎入門教學844100