前言:今天以前同事写的代码出问题了,在log文件中查找指定关键字然后跟前台传过来的进行比较,由于用户传过来的log格式老是有一点点的小变动,原来的代码适配性差,每次有变动代码就得变。今天终于有时间把这个地方优化优化,于是就走入一个误区------全局匹配问题, 想当然的认为正则表达式通用性比较大,就认为php全局匹配跟js一样可以使用g全局模式。 结果发现怎么样改, preg_match() 返回值都是bool(false),在匹配语法上折腾了好久,还用js正则在线测试工具去测试,发现能匹配上,php就不行,在一两个小时后,终于不一条路走到黑,想起用php在线测试工具试试,结果发现原来是加上g后导致匹配不上,去掉就可以了!!!
真无语,我知道preg_match_all()能全局匹配,而我还是相当然的认为这个跟js一样能用g全局匹配模式。真的太不应该! 时间可不是这么好浪费的!!!一定要再三再三严谨细心!!!