PHP preg_replace_callback() 函數

PHP 正則運算式(PCRE)PHP 正則運算式(PCRE)

preg_replace_callback 函數執行一個正則運算式搜索並且使用一個回調進行替換。

語法

mixed preg_replace_callback ( mixed $pattern , callable $callback , mixed $subject [, int $limit = -1 [, int &$count ]] )

這個函數的行為除了可以指定一個 callback 替代 replacement 進行替換字串的計算,其他方面等同於 preg_replace()。

參數說明:

  • $pattern: 要搜索的模式,可以使字串或一個字串數組。

  • $callback: 一個回調函數,在每次需要替換時調用,調用時函數得到的參數是從subject 中匹配到的結果。

  • $subject: 要搜索替換的目標字串或字串數組。

  • $limit: 可選,對於每個模式用於每個 subject 字串的最大可替換次數。 默認是-1(無限制)。

  • $count: 可選,為替換執行的次數。

返回值

如果subject是一個數組, preg_replace_callback()返回一個數組,其他情況返回字串。 錯誤發生時返回 NULL。

如果查找到了匹配,返回替換後的目標字串(或字串數組), 其他情況subject 將會無變化返回。

實例

實例 1

<?php // 將文本中的年份增加一年. $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); ?>

執行結果如下所示:

April fools day is 04/01/2003
Last christmas was 12/24/2002

PHP 正則運算式(PCRE)PHP 正則運算式(PCRE)