← PHP

Mostrar 1º nome e 1º caracter do último nome

Lida 1767 vezes

Offline

Glazz 
Membro
Mensagens 74 Gostos 0
Troféus totais: 17
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 50 Posts 10 Posts First Post Karma

Boas,

Preciso de formatar uma string que vai conter o nome de um cliente, e preciso de formatar para este formato: "Bruno G."

O código que tenho actualmente, funciona, mas será que dá para fazer de outra forma?

Código: (php) [Seleccione]
$_nome = explode(' ', $qry['nome']);
$p_nome = $_nome[0];
$u_nome = $_nome[sizeof($_nome)-1];
$nome = $p_nome . ' ' . substr($u_nome, 0, -strlen($u_nome)+1) . '.';


O código converte a string

de:     "Bruno Ferreira Gaspar"
para:  "Bruno G."


 - G l a z z
Offline

Nazgulled 
Membro
Mensagens 552 Gostos 0
Troféus totais: 29
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Poll Starter Level 5 Level 4 Level 3 Level 2

O teu código tá bom, não vejo o problema. Eu talvez fizesse ligeiramente diferente para poupar linhas, por exemplo:

- A variável $p_nome é um pouco desnecessária, podes usar $_nome[0] directamente na concatenação final.
- Usava o sizeof em vez do count, se bem que ambos fazem o mesmo.
- Não percebi porque usas o substr dessa forma se só queres o 1º char, podes fazer substr(string, 0, 1)
- Podes usar o end() para sacar o último elemento do array.

Ou seja, eu faria assim:

Código: (php) [Seleccione]
$nome = explode(' ', $qry['nome']);
$nome = $nome[0] . ' ' . substr(end($nome), 0, 1) . '.';
Offline

Glazz 
Membro
Mensagens 74 Gostos 0
Troféus totais: 17
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 50 Posts 10 Posts First Post Karma

Boas,

Obrigado pela resposta.

Sinceramente não me lembrei do end() e estava a usar aquele código assim pois não sei porque não me estava a funcionar só com o 0, 1 lol aparecia o ultimo nome mas sem o 1º caracter...

Obrigado assim ficou mais limpinho x)