preg_replace这个函数用的太多了,就是根据正则表达式去替换字符串里面的某些内容,如果替换成功返回替换的结果,如果正则不匹配就返回原字符串。当然这里的字符串支持以数组的形式传一组内容批量替换。代码里面一直用
$result = preg_replace('/^([\s\S]*;)([\s\S]*?)(class.*?extends[\s\S]*)$/', "$1$classComments$3", $fileContent);
file_put_contents($filePath, $result);
直到有一天发现文件的内容是空的,才去查手册,原来还有一种情况是出错的时候会返回null。按照正常的思路,我想用异常捕获以下,可是根本没有抛出。查了半天发现可以用 preg_last_error()
,这个函数去查看上次正则表达式的出错的原因,太伤了。返回值如下
我的错误是2,正则回溯限制问题,仔细检查了正则表达式,返现用了非贪婪模式匹配,确实会引发问题,同时实际情况是短文本没有问题,长文本就会有问题。所以只能适当调整以下正则了。
网友评论