一个?引发的正则表达式bug

2020-08-09  本文已影响0人  鸿雁长飞光不度

公司内部有一个每周发送融资事件动态邮件的功能,因为用户数太多,所以使用了队列异步发送,但是很奇怪有些项目在邮件里面没有显示logo,但是在后台添加的时候,图片预览的时候logo都正常显示了。第一反应,获取图片完整路径的函数一定没有考虑到cli模式下运行的情况,鉴于函数写的太复杂,个人找了半天,终于找到。

        $img = preg_replace('/(https?:)?\/\/(.*).' . $rootDomain . '\//i', '', $img);

主要的原因是$rootDomain在cli模式下是空字符串,然后往这个正则一拼接导致替换了原来错误的数据。
修复办法很简单,加一个?取消贪婪模式就好。

        $img = preg_replace('/(https?:)?\/\/(.*).' . $rootDomain . '\//i', '', $img);
上一篇下一篇

猜你喜欢

热点阅读