你如何使preg_replace捕获大写(PHP)?

And*_*tch 1 php string preg-replace

我有一个字符串:'Some_string_to_capitalize',我想将其转换为'Some_String_To_Capitalize'.我试过了:

$result = preg_replace( '/(_([a-z]{1}))/' , strtoupper('$1') , $subject  )
Run Code Online (Sandbox Code Playgroud)

$result = preg_replace( '/(_([a-z]{1}))/' , "strtoupper($1)" , $subject  )
Run Code Online (Sandbox Code Playgroud)

我查看了php手册页,在这里,但没有发现任何东西.如果这是一个重复的道歉!

这是Javascript的等效SO问题.

Dav*_*ton 8

我想你想使用preg_replace_callback:

在PHP 5.3+中

<?php
$subject = 'Some_string_to_capitalize';
$result = preg_replace_callback(
    '/(_([a-z]{1}))/',
    function ($matches) {
        return strtoupper($matches[0]);
    } ,
    $subject
);
Run Code Online (Sandbox Code Playgroud)

对于低于5.3的PHP

function toUpper($matches) {
    return strtoupper($matches[0]);
}

$result = preg_replace_callback('/(_([a-z]{1}))/', 'toUpper', $subject);
Run Code Online (Sandbox Code Playgroud)