從preg_replace() 的/e 修飾符轉換為preg_replace_callback
正規表示式反向引用
> ;
這一轉變的核心是理解正規表示式中的反向引用。當模式包含捕獲組(由括號分隔)時,每個組中的匹配文字都會分配一個反向引用編號。在這種情況下,反向引用 2 指的是匹配的小寫字母。
preg_replace() 中的 /e 修飾符
preg_replace 中現已棄用的 /e 修飾符() 允許用 PHP 程式碼進行模式替換。使用此修飾符,您可以動態產生替換字串。然而,由於它能夠執行任意程式碼,它也帶來了安全風險。
輸入 preg_replace_callback
preg_replace_callback 透過引入回呼函數提供了 /e 修飾符的替代方案。現在您可以傳遞處理替換過程的匿名函數或回調,而不是直接在正規表示式模式中嵌入程式碼。
將/e-Modified 模式轉換為回呼
要將提供的模式'strtoupper("2")' 轉換為回呼函數,我們只需將'2'替換為$m[2],其中$m 表示回呼中包含匹配的反向引用的陣列。
匿名回呼範例
匿名回呼函數的範例:
function ($m) { return strtoupper($m[2]); }
登入後複製
函數將 $m 陣列作為輸入,其中包含反向引用。然後,它將第二個反向引用 ($m[2]) 大寫並返回它作為替換。
註解與警告
- 記得使用 preg_replace_callback 時從模式中移除 /e 修飾符。
- 新增了 /e 修飾符的使用反向引用的斜線;在某些情況下,您可能需要在回呼中刪除它們。
以上是如何安全地將 preg_replace() 的 /e 修飾符替換為 preg_replace_callback()?的詳細內容。更多資訊請關注PHP中文網其他相關文章!