我需要利用我的正则表达式捕获/匹配的内容。假设我想在连字符之后将第一个字符大写,我的正则表达式将是这样的:
-(.)
我的替换字符串将是这样的:
-\U1
在preg_replace
中,我会有这样的事情:
$string = preg_replace('/-(.)/', '-\1', $string);
但这在preg_replace
中不起作用(我认为它不支持在反向引用中更改案例)。建议?
答案 0 :(得分:3)
您可以像这样使用preg_replace_callback:
$string = preg_replace_callback(
'#(?<=-)(.)#',
create_function(
'$matches',
'return strtoupper($matches[1]);'
),
$string
);
或者,使用匿名函数(使用PHP ver&gt; = 5.3.0):
$string = preg_replace_callback( '#(?<=-)(.)#', function( $matches) {
return strtoupper( $matches[1]);
}, $string);
答案 1 :(得分:0)
$string = preg_replace('/(?<=-)(.)/e', 'strtoupper("$1")', $string);