摘要: 用(?>…)实现固化分组(成功匹配后,回簌时不会考虑这个匹配的字符) 具体来说,使用「(?>…)」的匹配与正常的匹配并无差别,但是如果匹配进行到此结构之后(也就是,进行到闭括号之后),那么此结构体中的所有备用状态都会被放弃(不能被回溯)。 也就是说,在固化分组匹配结束时,它已经匹配的文本已经固化为一个单元,只能作为整体而保留或放弃。括号内的子表达式中未尝试过的备用状态都不复存在了,所以回溯永远也不能选择其中的状态(至少是,当此结构匹配完成时,“锁定(locked in)”在其中的状态)。 例子: 比如要处理一批数据,原来格式为123.456,后来因为浮点数显示问题,部分数据格式变为 阅读全文
posted @ 2012-02-08 15:07 taek 阅读(3455) 评论(0) 推荐(0) 编辑
摘要: 回溯 是针对量词来说的,$str = preg_replace('%<script>.+?</script>%i','',$str);//非贪婪看起来,好像没什么问题,其实则不然。若$str = '<script<script>alert(document.cookie)</script>>alert(document.cookie)</script>';那么经过上面的程序处理,其结果为$str = '<script<script>alert(doc 阅读全文
posted @ 2012-02-08 11:45 taek 阅读(638) 评论(0) 推荐(0) 编辑