PHP preg_filter() 函数执行正则表达式搜索和替换。此函数类似于 preg_replace() ,不同之处在于它仅返回存在匹配的(可能已转换的)主题。
语法
preg_filter(pattern, replacement, subject, limit, count)
参数
mode | 必需。 指定要搜索的模式。它可以是字符串,也可以是带有字符串的数组。 |
replacement | 必需。 指定要替换的字符串或包含字符串的数组。它的替换按以下方式完成:
|
subject | 必需。 指定要执行替换的字符串或包含字符串的数组。如果subject是一个数组,则对数组的每个元素进行替换,并返回替换后的数组。 |
limit | 可选。 指定每个subject 字符串中每个模式的最大可能替换数。默认值为 -1(无限制)。 |
count | 可选。 如果指定,此变量将包含完成的替换次数。 |
返回值
如果满足,则返回一个数组subject 参数是一个数组,或者是一个字符串。如果未找到匹配项或发生错误,则当 subject 为数组时返回空数组,否则返回 null。
示例:使用后向引用后跟数字文字
下面的示例说明了如何使用反向引用后跟数字文字。
<?php
$string = 'May 25, 2005';
$pattern = '/(\w+) (\d+), (\d+)/i';
$replacement = '${1}01, $3';
echo preg_replace($pattern, $replacement, $string);
?>
上述代码的输出将是:
May01, 2005
示例:使用mode和replacement作为数组
在下面的示例中,使用此函数时将mode和replacement用作数组。
<?php
$string = 'The quick brown fox jumps over the lazy dog.';
$pattern = array('/quick/', '/brown/', '/fox/');
$replacement = array('slow', 'black', 'wolf');
echo preg_filter($pattern, $replacement, $string);
?>
上述代码的输出将是:
The slow black wolf jumps over the lazy dog.
示例:使用 count 参数
下面的示例展示了如何使用此函数的 count 参数。
<?php
$count = 0;
$string = "May 1, 2015";
echo preg_replace(array('/\d/', '/\s/'), '*',
$string, -1 , $count)."\n";
echo "Number of replacements: $count";
?>
上面的输出代码为:
May**,*****
Number of replacements: 7
示例:比较 preg_filter() 与 preg_replace()
下面的示例说明了 preg_filter() 之间的差异和 preg_replace() 函数。
<?php
$subject = array('1', 'p', '2', 'q', '3', 'P', 'Q', '4');
$pattern = array('/\d/', '/[a-z]/', '/[1p]/');
$replace = array('P:$0', 'Q:$0', 'R:$0');
echo "preg_filter returns\n";
print_r(preg_filter($pattern, $replace, $subject));
echo "preg_replace returns\n";
print_r(preg_replace($pattern, $replace, $subject));
?>
上述代码的输出将是:
preg_filter returns
Array
(
[0] => P:R:1
[1] => Q:R:p
[2] => P:2
[3] => Q:q
[4] => P:3
[7] => P:4
)
preg_replace returns
Array
(
[0] => P:R:1
[1] => Q:R:p
[2] => P:2
[3] => Q:q
[4] => P:3
[5] => P
[6] => Q
[7] => P:4
)