发布网友 发布时间:2022-04-06 01:45
共2个回答
热心网友 时间:2022-04-06 03:14
这个错误是这样的情况,我们来一起分析下:
从错误的信息来看,貌似说是用了不推荐的函数,也就是过时的函数,可是事实是这样吗?
为了一探究竟,我查看了PHP手册的preg_replace()函数介绍,并没有说这个函数过时了或不推荐了,那么,问题出在哪了呢?
继续往下看,结果在手册中看到这样的消息:
错误/异常
当传入 "\e" 修饰符的时候,会产生一个 E_DEPRECATED 级别的错误。
好像明白点了,是因为用了“\e”修饰符,那之前使用为什么没有出错呢?
继续往下看,看到版本更新,一下恍然大悟,原来如此:
版本 说明
5.5.0 /e 修饰符已经被弃用了。使用 preg_replace_callback() 代替。参见文档中 PREG_REPLACE_EVAL 关于安全风险的更多信息
这下问题很清楚了,5.5.0以后的版本,/e的参数被废弃了,也就是不推荐了,官方建议使用preg_replace_callback()函数代替。
废话有点多了,好,下面进入正题。
好了,问题找到了,那就看看如何解决,官方推荐使用preg_replace_callback() ,那还客气啥,用就是了。
可是,问题又来了,怎么用呢?
继续看手册,看preg_replace_callback()的手册,说的很明白。
其实这个函数和preg_replace()唯一的区别就是,preg_replace()将匹配到的串直接替换,而preg_replace_callback()是将匹配到的串带入到回调函数中做处理后然后替换,就是这么任性,灵活度一下加大了,但是效率肯定不如preg_replace(),所以,如果仅仅是简单替换,还是用preg_replace()的好,如果要对匹配到的串进行特殊处理,那就非preg_replace_callback()莫属了,亲!
好了,就到这里了,为了升级知道账号,所以废话有点多了。。。。。望采纳啊。
热心网友 时间:2022-04-06 04:32
语句拼接不对