在PHP中,使冒号左边的每个字母都小写,不使用explode、infrade

在PHP中,使冒号左边的每个字母都小写,不使用explode、infrade,php,regex,preg-replace,Php,Regex,Preg Replace,这可以用正则表达式实现吗 例子 x示例标题:测试 变成 x示例标题:测试 y示例:testonetwother 变成 y示例:TestOne有三个您可以看看使用: 除非在特定情况下(例如,可以将“A”替换为“A”),否则不能使用正则表达式进行大小写转换 编辑:好的,你每天都会学到新东西。您可以这样做: $output = preg_replace('![a-zA-Z]+:!e', "strtoupper('\\1')", $input); 发件人: e(预更换评估) 如果设置了此修改器, 正常

这可以用正则表达式实现吗

例子

x示例标题:测试 变成 x示例标题:测试

y示例:testonetwother 变成 y示例:TestOne有三个

您可以看看

使用:

除非在特定情况下(例如,可以将“A”替换为“A”),否则不能使用正则表达式进行大小写转换

编辑:好的,你每天都会学到新东西。您可以这样做:

$output = preg_replace('![a-zA-Z]+:!e', "strtoupper('\\1')", $input);
发件人:

e(预更换评估)

如果设置了此修改器, 正常吗 中反向引用的替换 替换字符串,将其计算为 PHP代码,并将结果用于 替换搜索字符串。单身 引号、双引号、反斜杠() 空字符将通过 替换中的反斜杠 反向引用

只使用这个 修饰语;它被其他PCRE忽略 功能

然而,我会避开求值字符串,尤其是当与用户输入相结合时,这可能是一种非常危险的做法。我更喜欢使用
preg\u replace\u callback()
方法作为一般规则。

您可以在给定时在正则表达式模式上使用(查看该页上的示例4),以便调用PHP代码作为替换的一部分:

$string = "x-example-HEADER:teSt";
$new_string = preg_replace('/(^.+)(?=:)/e', "strtolower('\\1')", $string);
// => x-example-header:teSt
该模式将第一个冒号之前的所有内容捕获到第一个反向引用中,然后用
strtolower
函数替换它

$str = 'y-exaMPLE:testoneTWOthree';
function lower( $str ) {
    return strtolower( $str[1] );
}

echo preg_replace_callback( '~^([^:]+)~', 'lower', $str );
$str = 'y-exaMPLE:testoneTWOthree';
function lower( $str ) {
    return strtolower( $str[1] );
}

echo preg_replace_callback( '~^([^:]+)~', 'lower', $str );