📜  php preg_replace 回调 - PHP (1)

📅  最后修改于: 2023-12-03 14:45:12.619000             🧑  作者: Mango

PHP preg_replace 回调

preg_replace 是 PHP 中一个非常常用的字符串替换函数。它使用正则表达式匹配文本,并将匹配到的文本替换为指定的值。除了简单的字符串替换,preg_replace 还可以接收一个回调函数作为替换参数,实现更复杂的替换操作。

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 回调函数的基本语法如下:

preg_replace_callback(pattern, callback, subject);

其中,patternsubject 参数的含义与 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 进行复杂的字符串替换操作时,尝试一下它的回调函数用法吧!