4

我想大写一个字符串,如:

¿"hello"?

我希望我的功能返回

¿"Hello"?

我已经尝试使用正则表达式和 preg_match,但没有运气......这是我之前的问题,与这个问题相关: “preg_match 匹配两个字符,而它应该只匹配一个字符”

谢谢你们!

4

3 回答 3

2

使用 preg_replace_callback 如上所述 ascii-time,但 unicode 兼容:

echo preg_replace_callback('/^(\PL*)(\pL)/u', function($matches){
    return $matches[1] . mb_strtoupper($matches[2],'UTF-8');
}, '¿"éllo"?'),"\n";

输出:

¿"Éllo"?
于 2012-06-21T09:27:12.350 回答
1

您可以使用preg_replace_callback来做到这一点:

preg_replace_callback('/^([^a-z]*)([a-z])/i', function($matches){
    return $matches[1] . strtoupper($matches[2]);
}, '¿"hello"?');

// ¿"Hello"?
于 2012-06-20T14:59:27.790 回答
-1

尝试ucfirst功能http://php.net/manual/en/function.ucfirst.php

此类任务不需要正则表达式

样本

$foo = 'hello world!';
$foo = ucfirst($foo);             // Hello world!
于 2012-06-20T14:56:03.747 回答