Rafael Laurindo Postado Outubro 3, 2010 Denunciar Share Postado Outubro 3, 2010 (editado) 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 Outubro 4, 2010 por Rafael Laurindo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romero Dias Postado Outubro 3, 2010 Denunciar Share Postado Outubro 3, 2010 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"; } } ?> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Laurindo Postado Outubro 3, 2010 Autor Denunciar Share Postado Outubro 3, 2010 (editado) 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(' ', ' ', $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 Outubro 29, 2010 por Rafael Laurindo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ESerra Postado Outubro 4, 2010 Denunciar Share Postado Outubro 4, 2010 http://br.php.net/ucwords Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Laurindo Postado Outubro 4, 2010 Autor Denunciar Share Postado Outubro 4, 2010 Valeu meu velho. Perfeito, era isso mesmo. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Romero Dias Postado Outubro 4, 2010 Denunciar Share Postado Outubro 4, 2010 Fala Rafael,Tinha me confundido com sua dúvida, pensei que estava tentando separar a primeira letra de cada palavra.heheAbraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Rafael Laurindo Postado Outubro 4, 2010 Autor Denunciar Share Postado Outubro 4, 2010 Mas valeu assim mesmo meu amigo, a atenção e interesse de todos é o que move o fórum. Vivendo programando e aprendendo. Um abraço. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Rafael Laurindo
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.
Editado por Rafael LaurindoLink para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
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.