这次给大家带来在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 输出为Artikel terbaru oleh pengarang
2018-06-11 11:57:34 2018-06-15 15:55:18 2018-06-15 15:49:00 2018-06-15 15:46:15 2018-06-15 15:42:38 2018-06-15 15:40:34 2018-06-15 15:39:32 2018-06-15 15:37:14 2018-06-15 15:34:21 2018-06-15 15:22:51Isu terkiniDi mana saya harus meletakkan arahan CustomLog dalam apache Saya menggunakan php:7.2-apachedocker. Saya perlu melumpuhkan log akses log masuk url sema...daripada 2024-04-06 22:03:5901990Apakah format pembolehubah dalam nilai pulangan? Saya seorang pelajar baru php. Saya menjumpai sekeping kod: if($x<time()){return[false,...daripada 2024-04-06 21:55:2001778Kumpulkan hasil MySQL mengikut ID untuk menggelung Saya mempunyai jadual dengan data penerbangan dalam mysql. Saya sedang menulis kod php yan...daripada 2024-04-06 17:27:5601406Topik-topik yang berkaitanLagi>
- Bagaimana untuk membuka fail php
- Bagaimana untuk mengalih keluar beberapa elemen pertama tatasusunan dalam php
- Apa yang perlu dilakukan jika penyahserialisasian php gagal
- Bagaimana untuk menyambungkan php ke pangkalan data mssql
- Bagaimana untuk menyambung php ke pangkalan data mssql
- Bagaimana untuk memuat naik html
- Bagaimana untuk menyelesaikan aksara bercelaru dalam PHP
- Bagaimana untuk membuka fail php pada telefon bimbit