PHP:如何大写字符串的第n个字母?

时间:2015-02-21 19:52:15

标签: php string

每个人都知道如何大写字符串的第一个字母(ucfirst)但是第2个或第N个字母呢?我正在寻找一种简单的方法来在ascii字符串的位置N处大写字符。

4 个答案:

答案 0 :(得分:2)

我明白了:

$str[$n] = strtoupper($str[$n]);

请注意,该位置从零开始,因此对于字符串$n = 1中的第二个字符。

答案 1 :(得分:1)

使用ascii字符串,您可以这样做:

$str[$n] = strtoupper($str[$n]);

但是这不适用于unicode字符串,只有当字符用一个字节编码时才有效。

对于多字节字符串(例如utf8)

mb_internal_encoding ('UTF-8');

$str = mb_substr($str, 0, $n) . mb_strtoupper(mb_substr($str, $n, 1)) . mb_substr($str, ++$n);

答案 2 :(得分:0)

这对我有用,例如麦当劳,麦金尼,麦考尔等。 另外,假设字符串中只有一个Mc实例。

$newname = "Joe and Mary Mcdonald";
$position = stripos($newname, "Mc");  // case insensitive
$newname[$position + 2] = strtoupper($newname[$position + 2]);
echo $newname;

答案 3 :(得分:-1)

$str = "teststring";
$pos = 5;
function toUpper($str, $pos) {
    return substr_replace($str, strtoupper(substr($str, ($pos-1), 1)), ($pos-1), 1) ;
}
echo toUpper($str, $pos);

我想这就是你要找的东西。