📅  最后修改于: 2023-12-03 14:45:12.619000             🧑  作者: Mango
preg_replace
是 PHP 中一个非常常用的字符串替换函数。它使用正则表达式匹配文本,并将匹配到的文本替换为指定的值。除了简单的字符串替换,preg_replace
还可以接收一个回调函数作为替换参数,实现更复杂的替换操作。
preg_replace
函数的基本语法如下:
preg_replace(pattern, replacement, subject);
其中,pattern
参数是一个正则表达式,用于匹配字符串;replacement
参数可以是一个字符串或者一个回调函数,用于指定替换后的字符串;subject
参数是需要进行替换的字符串。
preg_replace
函数会将 subject
参数中所有符合 pattern
参数所描述的模式的子字符串替换为 replacement
参数指定的值得结果。
如果 replacement
参数是一个字符串,则函数会简单地将字符串中的 $n
(其中 n
是一个数字,表示正则表达式中第 n 个子模式匹配的子字符串)替换成匹配到的子字符串。例如:
$str = 'hello world';
$str = preg_replace('/(hello)/', '$1, PHP', $str);
echo $str;
// 输出:hello, PHP world
如果 replacement
参数是一个回调函数,则函数会将每个匹配到的子字符串,以及正则表达式中的 $n
替换成回调函数的返回值。例如:
$str = 'hello world';
$str = preg_replace('/(hello)/', function ($matches) {
return strtoupper($matches[0]);
}, $str);
echo $str;
// 输出:HELLO world
上例中,回调函数 function ($matches) {...}
的参数 $matches
是一个数组,包含匹配到的子字符串们。
preg_replace
回调函数的基本语法如下:
preg_replace_callback(pattern, callback, subject);
其中,pattern
和 subject
参数的含义与 preg_replace
函数相同;callback
参数是一个回调函数,它接收一个 $matches
参数,其中 $matches
参数和 preg_replace
函数的回调函数的 $matches
参数是相同的。回调函数需要返回一个用于替换的字符串。
回调函数的示例代码如下:
function strtoupper_callback($matches) {
return strtoupper($matches[0]);
}
$str = 'hello world';
$str = preg_replace_callback('/(hello)/', 'strtoupper_callback', $str);
echo $str;
// 输出:HELLO world
上例中,回调函数 strtoupper_callback
和前文中 preg_replace
回调函数示例的回调函数是相同的。回调函数将匹配到的子字符串转成大写后返回替换后的字符串。
preg_replace
回调函数是一个非常强大的字符串替换工具。它可以用于替换复杂的字符串结构。当你需要使用 preg_replace
进行复杂的字符串替换操作时,尝试一下它的回调函数用法吧!