Mudar primeira letra minúscula de frase para Maiúscula com PHP

Existem modos de transformar a primeira letra de uma frase ou texto em maiúscula usando PHP, claro que nem sempre a coisa é tão fácil e completa por tratar-se de um trabalho não humano, mas, vou mostrar algum modo de fazer essa mudança de letras minúsculas para maiúsculas.

Exemplo 1, tenta transforma a primeira letra da string em maiúscula

Esse código usa ucfirst que tem essa função de transformar a primeira letra(caractere) da string em maiúscula, mas é falho por não mudar acentuadas, Ç ou caracteres não alfabéticos serão considerados como o primeiro, aí ferra tudo.

<?php

$Frase = 'este é o meu texto super coerente';
// Transforma o primeiro caracter do texto em maiuscula, desde que não começe com espaço, nem ç, nem acentuada
$FirstLetterM=ucfirst($Frase);

// exibir meu texto
echo $FirstLetterM;
// Resulta em 'Este é o meu texto super coerente'
?>

Este exemplo acima, bem simples, como você vê tem um problema, se começar com uma acentuada ele simpesmente nada fará, só manterá o texto ou frase normalmente

Exemplo 2, com filtros "fortes" para trocar acentuadas minusculas


Esse filtro usa o primeiro código acima e depois um outro filtro de caracteres difinidos por você, para saber mais clique, só que, eu programei o apenas para alguns caracteres, caberá a você mudar, se quiser

<?php

$Frase = '  é este o meu texto que começa com acentuada';
// Transforma o primeiro caracter do texto em maiuscula, desde que não começe com espaçamento, nem ç, nem acentuadas
$FirstL=ucfirst($Frase);

// 'concatena' uns caracteres qualquer '§on§' que para saber o início do texto
$PrimeiraLetra='§on§'.$FirstL;
// agora meu texto virou: '§on§  é este o meu texto que começa com acentuada'

// se meu texto começar com espaçamento esse filtro tirar até 5
$FiltraEspaco=array("§on§     "=>"§on§","§on§    "=>"§on§","§on§   "=>"§on§","§on§  "=>"§on§","§on§ "=>"§on§");
$NotFirstSpace=strTr($PrimeiraLetra,$FiltraEspaco);
// agora meu texto virou: '§on§é este o meu texto que começa com acentuada'

// quando encontrar §on§ seguido de ç, é, á, ó, ú, í  troca por §on§ seguida de maiúscula que eu defini
$FiltraMinuscula=array("§on§ç"=>"§on§Ç","§on§é"=>"§on§É","§on§á"=>"§on§Á","§on§ó"=>"§on§Ó","§on§ú"=>"§on§Ú","§on§í"=>"§on§Í");
$AsMaiuscula=strTr($NotFirstSpace,$FiltraMinuscula);
// agora meu texto virou: '§on§É este o meu texto que começa com acentuada'

// retirar os caracteres feios '§on§' do inicio do texto
$TiraLixo=array("§on§"=>"");
$AgoraMaiuscula=strTr($AsMaiuscula,$TiraLixo);
// agora meu texto virou: 'É este o meu texto que começa com acentuada'


// exibir meu texto
echo $AgoraMaiuscula;
// Resulta em 'É este o meu texto que começa com acentuada'
?>


Exemplo 3, tentará mudar a primeira letra da string para maiúscula

Esse código usa strtoupper que tem essa função de transformar as letra da string em maiúscula, mas é falho por não mudar acentuadas ou Ç e aqui, ele vai pegar só a primeira letra da string $str, pego a primeira letra com $str[0] e se eu quisesse a segunda usaria $str[1] e a terceira $str[2] e assim sucessivamente

<?php
$str= 'eis a minha frase';

// Pega o primeiro caractere da string e tenta converter em maiuscula
$str[0]=strtoupper($str);

// exibir minha frase
echo $str;
// Resultar em: 'Eis a minha frase'
?>


Só para criar minhocas nas nossas cabeças, e para dar mais uma amostragem desse último exemplo, já que interessante, vamos que eu queira mudar o terceira caractere(se letra) por uma maiúscula, claro, desde que não acentuada ou...
<?php
$str= 'eis a minha frase';

// Pega o primeiro caractere da string e tenta converte em maiúscula
$str[2]=strtoupper($str[2]);

// exibir minha frase
echo $str;
// Resultar em: 'eiS a minha frase'
?>


Sem comentários:

Enviar um comentário