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