这次给大家带来在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 输出为作者最新文章
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:51最新问题PHP数组从URL参数中获取的行为不如预期 我有一个包含类别ID的URL参数,我想将其视为一个数组,如下所示:http://example.com?cat[]=3,9,13在PHP中,我使用它从URL参数获取数组:$catI...来自于 2024-04-06 22:09:02011428我应该在 apache 中哪里放置 CustomLog 指令 我正在使用php:7.2-apachedocker。我需要禁用运行状况检查url登录访问日志。基于此链接,他们提到了有关修改Customlog指令的信息。我不是关于需要更改Cust...来自于 2024-04-06 22:03:5901990返回值中变量的格式是什么? 我是php的新学习者。我发现有一段代码:if($x<time()){return[false,'error'];}逻辑或变量并不重要,但我不明白[false,'error']...来自于 2024-04-06 21:55:2001778按照ID对MySQL结果进行分组以便循环遍历 我有一个表,其中有mysql中的航班数据。我正在编写一个php代码,它将使用codeigniter3对数据进行分组和显示journey_idair_idFlightDuration...来自于 2024-04-06 17:27:5601406