4
我工作的这个老代码,这对面跑 - 这失败:PHP转换的preg_replace到preg_replace_callback
preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $sObject);
它告诉我的preg_replace e修饰符已被弃用,而是要使用preg_replace_callback。
从我所了解的情况来看,我应该用一个回调函数代替's:'.strlen('$2').':\"$2\";'
部分,该回调函数在匹配上进行替换。
我没有完全得到,正是正则表达式正在做的事情,我会替换。这是一个有点采取填充数据库字段(愚蠢,我知道......)与破碎的长度字段填入PHP序列化数据,并修复它们重新插入。
那么,任何人都可以解释一下这一点在做什么,或者我应该用什么替换它?
尼斯 - 记为[使用preg_replace_callback的'的返回值()'](https://开头EVAL。在/ 515251)作为输出 –
我猜OP知道字符串不变性。我将添加一个演示。 –
是的,我使用返回值作为输出。 到目前为止,它看起来像是在做它的工作,而这是正确的答案。还有其他代码部分工作不正常,即我用串口连接的字符串似乎是多维数组。谁决定这是一个好主意,将串行化的PHP数据插入数据库应该被挂起,刺伤,击中然后死亡! – user1632874