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' 元素也一起返回。

PHP 正則運算式(PCRE)