Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) "Capitalizar" a primeira letra de cada palavra


Rafael Laurindo

Pergunta

Pessoal, fiz esse código para "capitalizar" a primeira letra de cada palavra, mas não entendi bem como funciona o preg_replace. O que está faltando e o que está errado.

<?php
 echo preg_replace('/^[a-z]{1}| [a-z]{1}/', '/^[A-Z]{1}| [A-Z]{1}/', 'rafael pereira Laurindo');

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Prezado,

A função preg_replace(); substitui valores em uma string tento como base uma expressão regular para encontrar valores desejados.

Tenho uma função para abreviar nomes, que modifiquei para seu caso, agora ela pega a primeira letra de cada nome.

<?php

//Teste
echo abreviarNome("rafael pereira de Laurindo dos Santos");


//Função para abreviar
function abreviarNome($nome=''){
    if($nome){
        //Remove espaços duplicados ou maiores
        $nome = preg_replace('/\s{2,}/',' ',$nome);
        
        //Tranforma a string em array
        $arrNome = explode(' ',trim($nome));
        
        //Ignora 
        $arrIgnora = array('de', 'da', 'das', 'do', 'dos');
        
        //Percore o array recuperando o caracter inicial de cada valor
        for($i=0;$i<count($arrNome);$i++){
            if(!in_array(strtolower($arrNome[$i]),$arrIgnora)){
                $arrPrimeiroCaracter[] = strtoupper(substr($arrNome[$i],0,1)); 
            }
        }
        
        //Retorna o array transformando-o em string
        return implode(',',$arrPrimeiroCaracter);
    } else {
        //dispara um erro
        echo "não foi informado um nome válido";
    }
}
?>

Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado meu amigão. Mas eu achava que dava para fazer isso só com expressão regular, ficando o código ainda mais rápido e menor. Já possuo um código que "capitaliza" um nome.

<?php

class PHTML
{

    

    /*

     * @description: codifica os espaços de um texto para a forma HTML

     */

    function space_encode($str) {

        return str_replace(' ', '&nbsp;', $str);

    }



}

class String

{

    

    //tentar mudar para expressão regular

    public function capitalize($str)

    {

        $aux = explode(' ', $str);

        $new = array();

        $count = count($aux);

        for ($i=0; $i < $count; $i++){

            if($aux[$i] != '')

                $new[] = strtoupper($aux[$i]{0}) . substr($aux[$i], 1, strlen($aux[$i])-1) . ' ';

            else

                $new[] = ' ';

        }

        

        $str = '';

        $count = count($new);

        for ($i=0; $i < $count; $i++){

            $str .= $new[$i];

        }

        $phtml = new PHTML();

        return $phtml->space_encode($str);
    }

}



$str = new String();

echo $str->capitalize('rafael  pereira Laurindo');

No meu caso, optei por somente capitalizar, e não mexer nos espaços.

Editado por Rafael Laurindo
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...