PHP preg_replace()函数
preg_replace()函数是PHP的内置函数。它用于执行正则表达式搜索和替换。
此函数在 pattern 参数中搜索一定的 subject ,并将其替换为 replacement 。
语法
preg_replace (mixed pattern, mixedreplacement, mixed subject, intlimit, int $count)
参数
这个函数接受五个参数,如下所述:
pattern
这个参数可以是一个字符串或者一个字符串数组。它保存要在subject参数中搜索的模式。
replacement
这是一个字符串或者一个字符串数组参数。它用于替换在subject参数中匹配的模式。这是一个 必需的 参数。
- 如果replacement参数是一个字符串,并且pattern参数是一个数组,则所有的模式都将用该字符串来替换。
- 如果replacement和pattern参数都是数组,每个模式都将被替换为替换对应项。
- 如果替换数组中的元素比模式数组少,任何多余的模式都将被替换为空字符串。
subject
subject参数也可以是一个字符串或者一个字符串数组来搜索和替换。
如果subject是一个数组,则搜索和替换将在subject的每个条目上执行,并且返回的值也将是一个数组。
limit
limit是一个 可选的 参数,用于指定每个模式的最大替换次数。默认值为 limit为-1 ,表示没有限制。
count
它是一个 可选的 参数。如果传递了这个参数,这个变量将包含替换的次数。该参数在 PHP 5.1.0 中添加。
返回类型
preg_replace()函数如果subject参数是一个数组,则返回一个数组,否则返回一个字符串。
- 替换完成后,将返回修改后的字符串。
- 如果没有找到任何匹配项,则字符串将保持不变。
示例
简单替换
$res = preg_replace('/abc/', 'efg', $string); #Replace all 'abc' with 'efg'
$res = preg_replace('/abc/i', 'efg', $string); #Replace with case-insensitive matching
$res = preg_replace('/\s+/', '', $string); #Strip all whitespace
查看详细示例以实际理解 preg_replace() 函数:
使用后向引用和数字直接量的示例
<?php
date = 'May 29, 2020';pattern = '/(\w+) (\d+), (\d+)/i';
replacement = '{1} 5,3';
//display the result returned by preg_replace
echo preg_replace(pattern, replacement,date);
?>
输出:
May 5, 2020
示例:去除空格
在下面的示例中,preg_replace()会从给定的字符串中移除所有额外的空格。
<?php
str = 'Camila Cabello is a Hollywood singer.';str = preg_replace('/\s+/', ' ', str);
echostr;
?>
输出:
Camila Cabello is a Hollywood singer.
使用索引数组的示例
这个示例将包含一个模式数组,用来替换为替代数组。
<?php
//declare a string
string = 'The slow black bear runs away from the zoo.';patterns = array();
//pattern to search in subject string
patterns[0] = '/slow/';patterns[1] = '/black/';
patterns[2] = '/bear/';
//replacement value to replace with pattern in the given search stringreplacements = array();
replacements[2] = 'fox';replacements[1] = 'brown';
replacements[0] = 'quick';
//apply preg_replace functionnewstr = preg_replace(patterns,replacements, string);
echo "<b>String after replacement:</b> " .newstr;
?>
输出:
String after replacement: The fox brown quick runs away from the zoo.
在上面的示例中,我们可以看到输出结果与我们想要的不同。因此,在使用preg_replace()之前,我们可以在模式和替换项上应用ksort(),这样我们就可以得到我们想要的结果。
<?php
//declare a string
string = 'The slow black bear runs away from the zoo.';patterns = array();
//pattern to search in subject string
patterns[0] = '/slow/';patterns[1] = '/black/';
patterns[2] = '/bear/';
//replacement value to replace with pattern in the given search stringreplacements = array();
replacements[2] = 'fox';replacements[1] = 'brown';
replacements[0] = 'quick';
//sort the values of both pattern and replacement
ksort(patterns);
ksort(replacements);
//apply preg_replace functionnewstr = preg_replace(patterns,replacements, string);
echo "<b>String after replacement using ksort:</b> " .newstr;
?>
输出:
String after replacement using ksort: The quick brown fox runs away from the zoo.