定義和用法
preg_replace_callback - 執行一個正則表達式搜索並且使用一個回調進行替換
語法
preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )
這個函數的行爲除了 可以指定一個 callback 替代 replacement 進行替換 字符串的計算,其他方面等同於preg_replace() 。
參數
參數 | 必需的 | 描述 |
---|---|---|
pattern | 是 | 要搜索的模式,可以是字符串或一個字符串數組。 |
callback | 是 | 一個回調函數,在每次需要替換時調用,調用時函數得到的參數是從subject 中匹配到的結果。回調函數返回真正參與替換的字符串。這是該回調函數的簽名:handler ( array $matches ) 。你可能經常會需要callback函數而 僅用於preg_replace_callback()一個地方的調用。在這種情況下,你可以 使用匿名函數來定義一個匿名函數作 爲preg_replace_callback()調用時的回調。 這樣做你可以保留所有 調用信息在同一個位置並且不會因爲一個不在任何其他地方使用的回調函數名稱而污染函數名稱空間。 |
subject | 是 | 要搜索替換的目標字符串或字符串數組。 |
limit | 否 | 每個主題字符串中每個模式的最大可能替換數。 默認爲-1(無限制)。 |
count | 否 | 如果指定,此變量將填充完成的替換次數。 |
返回值
如果subject是一個數組, preg_replace_callback()返回一個數組,其他情況返回字符串。 錯誤發生時返回 NULL。 如果查找到了匹配,返回替換後的目標字符串(或字符串數組), 其他情況subject 將會無變化返回。
示例
// 將文本中的年份增加一年. $text = "April fools day is 04/01/2002\n"; $text.= "Last christmas was 12/24/2001\n"; // 回調函數 function next_year($matches) { // 通常: $matches[0]是完成的匹配 // $matches[1]是第一個捕獲子組的匹配 // 以此類推 return $matches[1].($matches[2]+1); } echo preg_replace_callback( "|(\d{2}/\d{2}/)(\d{4})|", "next_year", $text);
相關函數
preg_replace_callback() - 執行一個正則表達式搜索並且使用一個回調進行替換
preg_quote() - 轉義正則表達式字符
preg_replace() - 執行一個正則表達式的搜索和替換
preg_last_error() - 返回最後一個PCRE正則執行產生的錯誤代碼
preg_replace_callback_array() - 執行正則表達式搜索並使用回調替換