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