美文网首页
preg_replace返回为null

preg_replace返回为null

作者: 鸿雁长飞光不度 | 来源:发表于2020-05-27 00:53 被阅读0次

    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(),这个函数去查看上次正则表达式的出错的原因,太伤了。返回值如下

    image.png

    我的错误是2,正则回溯限制问题,仔细检查了正则表达式,返现用了非贪婪模式匹配,确实会引发问题,同时实际情况是短文本没有问题,长文本就会有问题。所以只能适当调整以下正则了。

    相关文章

      网友评论

          本文标题:preg_replace返回为null

          本文链接:https://www.haomeiwen.com/subject/edrvahtx.html