PHP preg_filter() 函數
preg_filter 函數用於執行一個正則運算式搜索和替換。
語法
mixed preg_filter ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )
preg_filter() 等價於 preg_replace() ,但它僅僅返回與目標匹配的結果。
參數說明:
- $pattern:要搜索的模式。可以是一個字串或字串數組。
- $replacement:用於替換的字串或字串數組。
- $subject:要進行搜索和替換的字串或字串數組。
- $limit:可選,每個模式在每個subject上進行替換的最大次數。默認是 -1(無限)。
- $count:可選,完成的替換次數。
實例
比較preg_filter() 和preg_replace()的示例
$subject = array('1', 'a', '2', 'b', '3', 'A', 'B', '4');
$pattern = array('/\d/', '/[a-z]/', '/[1a]/');
$replace = array('A:$0', 'B:$0', 'C:$0');
echo "preg_filter 返回值:\n";
print_r(preg_filter($pattern, $replace, $subject));
echo "preg_replace 返回值:\n";
print_r(preg_replace($pattern, $replace, $subject));
執行結果如下所示:
preg_filter 返回值: Array ( [0] => A:C:1 [1] => B:C:a [2] => A:2 [3] => B:b [4] => A:3 [7] => A:4 ) preg_replace 返回值: Array ( [0] => A:C:1 [1] => B:C:a [2] => A:2 [3] => B:b [4] => A:3 [5] => A [6] => B [7] => A:4 )
可以看出 preg_filter 只返回匹配結果,不匹配的直接忽略,而 preg_replace 將不匹配的結果 'A' 'B' 元素也一起返回。