正規表示式可能會令人生畏,尤其是在使用捕獲組和替換替換時。讓我們使用'/e' 修飾符來破解preg_replace() 的替換任務:
public static function camelize($word) { return preg_replace('/(^|_)([a-z])/e', 'strtoupper("\2")', $word); }
這裡,目標是將'^' (字符串開頭)或'_' (字符串開頭)後面的字母大寫(底線)。
'/e' 修飾符將替換字串計算為 PHP 程式碼。 「2」指的是第二個捕獲組,即「^」或「_」後面的小寫字母。然而,出於安全原因,此修飾符已被棄用。
preg_replace_callback() 透過提供回呼函數而不是替換字串提供了更安全的替代方案:
return preg_replace_callback('/(^|_)([a-z])/', function($matches) { return strtoupper($matches[2]); }, $word);
return preg_replace_callback('/(^|_)([a-z])/', function($matches) { return strtoupper($matches[2]); }, $word);變數作用域匿名函數只能存取使用 'use' 關鍵字明確匯入的變數。 陷阱
以上是如何安全地將 PHP 已棄用的 `preg_replace()` `/e` 修飾符替換為 `preg_replace_callback()`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!