我想将可能包含特殊字符的字符串的第一个字母大写(这就是 ucfirst 在这里无效的原因)。我有下一个代码:
$string = 'ésta';
$pattern = '/^([^a-z]*)([a-z])/i';
$callback_fn = 'process';
echo preg_replace_callback($pattern, $callback_fn, $string);
function process($matches){
return $matches[1].strtoupper($matches[2]);
}
返回 'éSta' 但 'Ésta' 是预期的......我认为我的问题是我正在使用的模式,但我做了不同的组合(如$pattern = '/\pL/u'
),但我还没有找到一个好的正则表达式。