將preg_replace()改寫為preg_replace_callback()


preg_replace()函數使用/e修飾符可能帶來安全隱患,PHP5.5之后,該用法被拋棄使用,升級為preg_replace_callback()。在新版本下運行老版本的代碼,會出現錯誤,如:

Deprecated: preg_replace(): The /e modifier is deprecated, use preg_replace_callback instead in D:\xampp\htdocs\eccore\view\template.php on line 726

這時需要將函數進行改寫。

打開錯誤提示中相應的文件,找到對應函數:

$val = preg_replace("/\[([^\[\]]*)\]/eis", "'.'.str_replace('$','\$','\\1')", $val);

改寫為:

$val = preg_replace_callback("/\[([^\[\]]*)\]/is", function($matches){
            return '.'.str_replace('$','\$','$matches[1]');
            }, $val);
$matches[1]代表捕獲的第一個子組,$matches[0]則代表完全匹配的字符串。具體改寫方法是,將原來的第二個參數變為回調函數,在函數中返回原來第二個參數相同的值。
這兩個函數原型可參閱官方文檔:http://php.net/manual/zh/function.preg-replace.php

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM