ucfirst()
A função ucfirst() em PHP converte o primeiro caractere de uma string para maiúscula. Saiba como usá-la e seus casos especiais.
ucfirst() retorna uma cópia de uma string com o primeiro caractere convertido para maiúscula. Todos os outros caracteres são mantidos exatamente como estavam. É a função ideal quando você precisa capitalizar um nome, uma frase ou um rótulo sem alterar o restante do texto.
Esta página aborda a sintaxe, o valor de retorno, os casos especiais que surpreendem as pessoas (números, strings já em maiúsculas, texto multibyte) e como ucfirst() difere das funções de capitalização relacionadas.
Sintaxe
ucfirst(string $string): string| Parâmetro | Descrição |
|---|---|
$string | A string de entrada. |
Valor de retorno: uma nova string com o primeiro caractere em maiúscula. ucfirst() não modifica $string no lugar — ela retorna o resultado, portanto você deve capturá-lo ou exibi-lo com echo. Se o primeiro caractere não for uma letra minúscula (um dígito, um símbolo ou já estiver em maiúscula), a string é retornada sem alterações.
Exemplo básico
Apenas o h inicial se torna H. A vírgula, o restante das palavras e o ponto de exclamação permanecem intocados — ucfirst() nunca coloca em minúscula nem altera nada após o primeiro caractere.
O que ucfirst() não faz
Um erro comum é esperar que ucfirst() limpe a string inteira. Ela não faz isso:
<?php
echo ucfirst("HELLO") . "\n"; // HELLO (first char already uppercase → no change)
echo ucfirst("hELLO") . "\n"; // HELLO (only the first char is touched, not the rest)
echo ucfirst("123abc") . "\n"; // 123abc (first char is a digit → nothing to capitalize)Se você deseja uma palavra Capitalizada limpa a partir de uma entrada bagunçada, converta-a para minúsculas primeiro e depois capitalize:
<?php
$messy = "hELLO";
echo ucfirst(strtolower($messy)); // HelloCapitalizando cada palavra
ucfirst() afeta apenas o primeiro caractere da string inteira. Para capitalizar a primeira letra de cada palavra, use ucwords():
<?php
$title = "the quick brown fox";
echo ucfirst($title) . "\n"; // The quick brown fox
echo ucwords($title) . "\n"; // The Quick Brown FoxTexto multibyte / não-ASCII
ucfirst() funciona byte a byte e compreende apenas letras ASCII (a–z). Ela não converterá corretamente para maiúscula letras acentuadas ou não latinas como é, ñ ou caracteres cirílicos no início da string. Para esses casos, o tratamento correto requer a extensão de strings multibyte — não existe mb_ucfirst(), por isso um padrão comum é:
<?php
function mb_ucfirst(string $string, string $encoding = "UTF-8"): string
{
$first = mb_strtoupper(mb_substr($string, 0, 1, $encoding), $encoding);
return $first . mb_substr($string, 1, null, $encoding);
}
echo mb_ucfirst("élise"); // ÉliseQuando usar
- Formatação de entrada do usuário — exibir
"joao"digitado em um formulário como"Joao". - Capitalização de sentença — capitalizar a primeira palavra de uma mensagem ou rótulo gerado.
- Criação de identificadores legíveis — transformar um segmento de slug em um título.
Para a operação oposta (colocar o primeiro caractere em minúscula) consulte lcfirst(). Para alterar o caso de toda a string, consulte strtoupper() e strtolower().
Resumo
ucfirst() converte apenas o primeiro caractere de uma string para maiúscula e retorna o resultado sem modificar o original. Ela ignora não-letras e caracteres já em maiúscula, nunca toca no restante da string e funciona apenas com ASCII — combine-a com strtolower() para normalizar entradas bagunçadas, com ucwords() para capitalizar cada palavra, ou com as funções multibyte acima para texto acentuado.