omm62 1 Denunciar post Postado Maio 28, 2010 Boa dia pessoal. Tô precisando de ajuda no seguinte: tenho que formar logins em uma base de dados mysql já existente. Esses logins serão formados pelo nome de trabalho + as iniciais do nome e sobrenome. Na base já tenho o nome de trabalho e queria pegar as inicias para formar um campo com as inicias desses nomes e a partir dai formar os logins. Ocorre que a base tem 2500 registros. Agradeço antecipadamente. Compartilhar este post Link para o post Compartilhar em outros sites
GabrielFerrari 41 Denunciar post Postado Maio 28, 2010 O PHP tem uma função chamada substr Com ela você pega uma parte de uma string No php.net tem a documentação sobre ela acho que conseguindo entender com ela funciona você irá resolver seu problema. Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Maio 28, 2010 Como está a estrutura do banco? O nome e o sobrenome estão numa mesma coluna ou estão separados? Compartilhar este post Link para o post Compartilhar em outros sites
omm62 1 Denunciar post Postado Maio 28, 2010 Nome e sobrenome em um mesmo campo. Tem um campo "nome de trabalho" tipo "CARLOS DA SILVA AMORIM" nome de trabalho "AMORIM". Desejo pegar as inicias CSA e compor um campo chamado login que ficaria, neste caso, "AMORIMCSA" Gabriel, pelo que entendi da funca substr ela pega parte de uma string sim. O que ocorre é que o conteúdo de meu campo "nome" é variável com então eu definiria os parâmetros deste exemplo? <?php $rest = substr("abcdef", -1); // returns "f" $rest = substr("abcdef", -2); // returns "ef" $rest = substr("abcdef", -3, 1); // returns "d" ?> Nele a string tem um número definido de caracteres. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Maio 28, 2010 function Iniciais($nome,$minusculas = true){ preg_match_all('/\s?([A-Z])/',$nome,$matches); $ret = implode('',$matches[1]); return $minusculas? strtolower($ret) : $ret; } echo Iniciais('Evandro Franco de Oliveira'); O segundo parâmetro converte o resultado em minúsculos. Compartilhar este post Link para o post Compartilhar em outros sites
GabrielFerrari 41 Denunciar post Postado Maio 28, 2010 é só trocar o abcdef pela sua variavel Compartilhar este post Link para o post Compartilhar em outros sites
borsatti 2 Denunciar post Postado Maio 28, 2010 function Iniciais($nome,$minusculas = true){ preg_match_all('/\s?([A-Z])/',$nome,$matches); $ret = implode('',$matches[1]); return $minusculas? strtolower($ret) : $ret; } echo Iniciais('Evandro Franco de Oliveira'); O segundo parâmetro converte o resultado em minúsculos. eu fiz uma mudança no seu codigo Pq se o nome vir todo em maiusculo , vai cagar.. <?php function Iniciais($nome,$minusculas = true){ $nome = ucWords(strtolower($nome)); #ESSA LINHA $nome = ereg_replace("Da|De|Di|Do|Du","",$nome); # ESSA Tambem preg_match_all('/\s?([A-Z])/',$nome,$matches); $ret = implode('',$matches[1]); return $minusculas? strtolower($ret) : $ret; } echo Iniciais('EVANDRO FRANCO DE OLIVEIRA'); ?> Compartilhar este post Link para o post Compartilhar em outros sites
omm62 1 Denunciar post Postado Maio 28, 2010 Show de bola. Usei a ideia do Evandro e do Borsatti e funfou. Muito grato amigos. Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Maio 28, 2010 versão 2.0 function Iniciais($nome){ $partes = explode(" ",$nome); $ret = ''; foreach($partes as $parte) if(strlen($parte) > 3) $ret .= substr($parte,0,1); return $ret; } Compartilhar este post Link para o post Compartilhar em outros sites
borsatti 2 Denunciar post Postado Maio 28, 2010 versão 2.0 function Iniciais($nome){ $partes = explode(" ",$nome); $ret = ''; foreach($partes as $parte) if(strlen($parte) > 3) $ret .= substr($parte,0,1); return $ret; } Eu ainda acho que a que a gente fez primeiro é melhor, pois usar foreach ocupa mais memoria. Ai fica por você! Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Maio 28, 2010 Eu ainda acho que a que a gente fez primeiro é melhor, pois usar foreach ocupa mais memoria. Ai fica por você! compensada com a remoção de REGEX, tanto em PEARL quanto POSIX que foram até deprecadas ;) Compartilhar este post Link para o post Compartilhar em outros sites
borsatti 2 Denunciar post Postado Maio 28, 2010 Eu ainda acho que a que a gente fez primeiro é melhor, pois usar foreach ocupa mais memoria. Ai fica por você! compensada com a remoção de REGEX, tanto em PEARL quanto POSIX que foram até deprecadas ;) Se você diz.. beleza :)!!! Compartilhar este post Link para o post Compartilhar em outros sites
Pablo Rafaelo Si 0 Denunciar post Postado Agosto 31, 2014 Tem um erro nesse programa versão 2! Meu nome é Pablo Rafaelo Si Ou seja, meu sobre nome é "Si", uma string de tamanho 2. Nesse código, as iniciais do meu nome ficariam: PR, mas o correto seria PRS. Compartilhar este post Link para o post Compartilhar em outros sites