preg_replace_callback 的一个示例

作者

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

回复

邮箱地址不会被公开。