替换preg_replace_callback中的多个匹配项

时间:2018-04-11 17:23:44

标签: php preg-match preg-replace-callback

我有一个读取foo_bar_one的字符串,我想要实现的是

foo_Bar_One,使用这个正则表达式/(?<=_)./我试图实现一个preg_replace_callback,但它不能正常工作,否则我误解了函数的功能。

这是我的方法

preg_replace_callback(
    '/(?<=_)./',
    function ($matches) {
        return strtoupper($matches[0]);
    },
    $model_name
);

匹配并转换为Caps但是何时返回?它不会在实际搜索文本中替换它吗?

1 个答案:

答案 0 :(得分:0)

根据preg_replace_callback

的返回值
  

如果subject参数是,则preg_replace_callback()返回一个数组   数组,否则为字符串。出错时,返回值为NULL

     

如果找到匹配项,则返回新主题,否则返回   科目将不变。

因此,您可以捕获返回的内容,如:

$model_name = "foo_bar_one";
$result = preg_replace_callback(
    '/(?<=_)./',
    function ($matches) {
        return strtoupper($matches[0]);
    },
    $model_name
);

echo $result;

那会给你

  

foo_Bar_One