PHP正则表达式的效率:回溯与固化分组

上文中,我们聊到了一点关于PHP中(NFA PCRE)正则表达式匹配优先量词,忽略优先量词的匹配原理了。那么上文留下的问题,您的答案是什么呢?
对于第一种贪婪匹配的匹配规则,回溯的9次是正则【】对字符串“”匹配时,构成的回溯,回溯的次数,恰好是字符串的长度。
第二种非攀谈匹配规则,回溯5次,是正则【.+?】对字符串“123456”匹配时构成的回溯。回溯的次数,为字符串长度减去最小次数。也就是6-1=5次。如果正则表达式为【.*?】那么,回溯次数就是6次了。
第三种正则是零宽断言,或者叫环视。(暂且不说。)

Continue reading


小议正则表达式效率:贪婪、非贪婪与回溯

前几天看了鸟哥的BLOG上写的关于正则表达式的回溯与递归的限制时,对贪婪、非贪婪产生的回溯有疑问,遂近段时间,仔细的学习研究了一下,现在把经验心得与大家分享一下。
先扫盲一下什么是正则表达式的贪婪,什么是非贪婪?或者说什么是匹配优先量词,什么是忽略优先量词?
好吧,我也不知道概念是什么,来举个例子吧。

Continue reading


coolcode转SyntaxHighlighter与Mysql正则表达式


blog的代码高亮插件原来是coolcode的,coolcode的高亮插件确实很酷,显示效果也很棒,但是占用的位子太大了。最近,我抽空改成SyntaxHighlighter。由于coolcode插件的开头标签是或者[coolcode]这样的,而SyntaxHighlighter是[code]这样的(或者其他)。遂只能想办法把老的格式转化成新的格式。当然,肯定用到正则表达式了。

Continue reading


CFC4N小试正则表达式

朋友甲:要求根据一串字符串,反转成PHP数组,其给出的字符串为php的print_r打印出来的。我们在暂不考虑此方法是否能确保数据的准确性,以及其他意外等情况,仅根据要求写正则。
朋友乙:要求批量给html字符串中a标签中不包含title属性的标签添加title,而且,其title内容为<a href…>到</a>之间的文本。。
朋友丙:要求过滤非本域名,或者非本子域名的其他域名的UBB标签链接,一旦包含,直接替换成其中间的文本
朋友丁:要求读取squid的配置文件中,起作用的行,也就是没有#开头进行注释的行

Continue reading


Discuz7.2的暴露网站所在路径的BUG

Discuz7.2处理图片报错,信息为:Warning: sprintf() [function.sprintf]: Too few arguments in ….\include\discuzcode.func.php on line 369,原因分析:
当用户在发帖的时候,选择使用远程图片地址,且指定了图片的宽,高,且URL中包含%百分号(比如汉字URL编码)的时候,被discuzcode.func.php程序中的discuzcode函数处理。在discuzcode函数处理图片的URL的正则替换部分,用parseimg函数进行处理,parseimg函数的三个参数全部是正则匹配的结果,三个参数依次是宽,高,URL地址。paeseimg函数又调用了bbcodeurl函数处理,并把匹配的URL当作bbcodeurl函数的第二个参数的一部分,交给bbcodeurl函数处理。的sprintf 函数的第一个参数来自用户输入的数据,程序在使用bbcodeurl函数的时候,没有检测用户输入的数据,直接把用户输入的数据作为自己参数的一部分,也就是$tags参数了。bbcodeurl函数用了sprintf函数进行字符串格式化。$tags又是第一个参数,其中,$tags字符串中的%号是格式化字符串的保留字符,以为着有几个单独的%号,就必须后接几个参数。由于程序没有判断$tags中包含几个单独的百分号,后面的参数也是固定的两个,如果URL中包含百分号的话,则导致参数的个数不对,报Warning错,就暴露了程序所在服务器的路径了(config.inc.php中的$errorreport变量限制了错误报告的对象,默认只允许报告给版主,管理人员)。

Continue reading


Visual Studio 2010 全部五部广告视频。让爱延长、幸福也需要敏捷、当爱有了debug、让爱编译通过

继《Visual Studio仿优乐美广告》之后第二弹《让爱延长》煽情广告又放出啦。其男女主角都没变。女主角依然那么PL,广大程序员宅男们,接着内牛满面啊。。。。
第三弹 《幸福也需要敏捷》,第四弹,《当爱有了debug》,第五弹,《让爱编译通过》,其中第五弹台词:妈妈说:你什么都好,就不该是个程序员…… 很杯具的台词

Continue reading


firefox上gladder奇怪的网络请求…

终于完成手头的项目了,可以松了口气.对于一个爱好网络脚本安全的人(请允许我这么说),还是很重视自己写程序的安全性,从sql injection, xss,csrf,都做了过滤,甚至参照discuz,做了表单的formhash,防止本地提交等非法提交.当然,对于安全知识薄弱的我,是不能做的很安全,很完美的,还是需要充电… 下午,特意拜访了牛人的blog剑心,SuperHei 等前辈的blog,找了一些文章阅读,充电…其中,看到剑心前辈的PPT,关于xss, csrf攻击的,谈到了cookie域的问题,也谈到了xss攻击导致雅虎股价下跌的事件.
为什么会出现这样的事情呢?

Continue reading