Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Elton Ésqui

[Resolvido] Arrays

Recommended Posts

Amigos

 

Tenho o seguinte nome no banco

 

JOÃO DA SILVA YPIRANGA

 

Esse Array faz com que seja exibido somente o primeiro nome, no caso, JOÃO.

<?php
$frase = $row_move_reg['nome'];
$array = explode(" ", $frase);
echo strtoupper($array[0]);
?>

Como devo fazer para exibir JOÃO SILVA (desconsiderando o DA quando existir)

Ou exibir o primeiro e último, para ficar JOÃO YPIRANGA, por exemplo.

 

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, de unset() no segundo indice para deletar, e depois join/implode para juntar:

unset($array[1]);
implode(' ', $array);
Ou str_replace para substituir:

$array = explode(' ', str_replace('DA', '', '$frase));

 

Porém tem um problema.... se o "DA" não estiver na segunda posição ou "DA" for variavel (como "de") não vai funcionar. Então aconselho você fazer uma lista de preposições ou palavras que você quer retirar do nome e efetuar um dos passoas acima (acho que o str_replace ficaria mais facil) assim irá retirar tudo oque você não quer.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem para exibir o primeiro é como você está fazendo mesmo.

Já para exibir o último basta você contar quantos elementos existem no Array e exibir o total de elementos.

 

$var = count($array);
$ultimo = $array($var);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei que 0 é o primeiro nome, 1 o segundo e assim por diante.

Em JOÃO DA SILVA YPIRANGA, por exemplo.

 

Se o código estiver assim:

<?php
$frase = $row_move_reg['nome'];
$array = explode(" ", $frase);
echo strtoupper($array[3]); //Aqui define qual bloco exibir
?>
Vai exibir: YPIRANGA

 

Não teria algo mais simples, como:

<?php
$frase = $row_move_reg['nome'];
$array = explode(" ", $frase);
echo strtoupper($array[0,3]); // Para exibir JOÃO YPIRANGA, ou seja, o bloco 0 e bloco 3.
?>

???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não teria algo mais simples, como:

<?php
echo strtoupper($array[0,3]); // Para exibir JOÃO YPIRANGA, ou seja, o bloco 0 e bloco 3.
?>

E se o nome for: JOSÉ RENATO FONSECA DA SILVA YPIRANGA ???

 

Você não pode simplesmente assumir que os blocos 0 e 3 serão sempre os corretos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim João.

 

Nesse caso ficaria JOSÉ FONSECA.

Só quis ilustrar como ficaria com 0 e 3.

Mas o ideal mesmo seria algo como:

Pegar o primeiro e ultimo bloco.

Aí ficaria:

MARIA LUISA COSTA = MARIA COSTA

JOAO FERNANDO DA SILVA RIBEIRO = JOAO RIBEIRO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pegar o primeiro e ultimo bloco.

Aí ficaria:

MARIA LUISA COSTA = MARIA COSTA

JOAO FERNANDO DA SILVA RIBEIRO = JOAO RIBEIRO

 

Veja se é isso:

 

function cortaNome( $nome ){
$words = explode( ' ' , $nome );

if ( ( $total = count( $words ) ) > 2 )
	array_splice( $words , 1 , $total - 2 );

return implode( ' ' , $words );
}

echo cortaNome( 'MARIA LUISA COSTA' ) , PHP_EOL; //MARIA COSTA
echo cortaNome( 'JOSÉ RENATO FONSECA DA SILVA YPIRANGA' ) , PHP_EOL; //JOSÉ YPIRANGA
echo cortaNome( 'JOAO FERNANDO DA SILVA RIBEIRO' ) , PHP_EOL; //JOAO RIBEIRO
echo cortaNome( 'JOSÉ LUIZ' ) , PHP_EOL; //JOSÉ LUIZ

Compartilhar este post


Link para o post
Compartilhar em outros sites

Parece que queres fazer uma busca por nomes...

Se for isso a função similar_text pode te ajudar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Holt.

Na verdade quero buscar o nome de algum lugar (banco, textfield e etc) e exibir so o primeiro e o úlitmo nome.

 

*** Testei o que o João Batista Neto desenvolveu. Ficou perfeito!!! ***

 

Obrigado!!!

 

Qual é a regra do fórum referente aos resolvidos? Tem algum lugar onde eu possa marcar resolvido?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta voltar ao tópico e dizer como resolveu.

algum moderador (agora eu), marca o título como resolvido, apenas para facilitar em futuras pesquisas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.