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

我有一个字符串:“Some_string_to_capitalize”,我想将其转换为“Some_String_To_Capitalize”。我试过:

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

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

我查看了 PHP 手册页和此处的 SO,但一无所获。如果这是一个骗局,我们深表歉意!

This is the equivalent SO question for Javascript .

最佳答案

我想你想使用 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
);

对于 5.3 以下的 PHP>

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

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

https://stackoverflow.com/questions/9878745/

相关文章:

objective-c - 如何将 32 位 PNG 转换为 RGB565?

php - 检查多个字符串是否为空

c++builder - 如何使用 C++ Builder 打开带有按钮的新表单?

php - 解析 SOAP 负载的 XML 错误 : Reserved XML Name

math - alpha 混合如何在数学上逐个像素地工作?

sql - 如何根据 Oracle SQL 中的日期进行过滤

django - 来自模型的初始表单数据 - Django

r - 在 R 中,如何在运行具有大量变量的多元回归后仅提取重要变量

macos - 在 Mac OS X 中使用命令行杀死 "loginwindow"进程

jsf - 命令按钮操作不起作用