preg_replace_callback 使用正则表达式搜索和替换。在php的官网有个示例,可以把一个字符串的书写形式,由下划线形式修改成驼峰形式。
示例函数
echo preg_replace_callback('~-([a-z])~', function ($match) {
return strtoupper($match[1]);
}, 'hello-world');
输出的结果是 helloworld
preg_replace_callback
preg_replace_callback ( string|array $pattern , callable $callback , string|array $subject , int $limit = -1 , int &$count = null , int $flags = 0 ) : string|array|null
执行的过程分析
preg_match('~-([a-z])~','hello-world', $match);
var_dump($match);
输出为
array(2) {
[0]=>
string(2) "-w"
[1]=>
string(1) "w"
}
改写一下,不用匿名函数
function f($match) {
return strtoupper($match[1]);
}
echo preg_replace_callback('~-([a-z])~', 'f', 'hello-world', 1);
preg_replace_callback 执行的时候,返回给 函数 f的参数是
array(2) {
[0]=>
string(2) "-w"
[1]=>
string(1) "w"
}
所以替换的结果是 W
preg_replace_callback 的替换和 preg_replace 一样。替换是字符串是 -w
echo preg_replace('~-([a-z])~','#', 'hello-world');
输出: hello#orld