Ir para conteúdo

POWERED BY:

Arquivado

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

Eduardo Pizza

[Resolvido] Função para eliminar a primeira palavra e o primeiro

Recommended Posts

Estou com o seguinte problema:

 

 

Recebo dados de um banco mysql que chegam da seguinte forma:

 

Rua Aviador Gomes

 

Av. Coronel Andrade

 

Travessa Santa Luz

 

Praça Carlos Neves

 

 

etc

 

 

Ao manipular esses dados com php, preciso eliminar as strings

 

 

"Rua ", "Av. ", "Travessa " e "Praça "

 

 

para inserir numa outra tabela

 

 

 

Tentei usar isso:

 

 

$rua = $linha_tabela_campo['rua'];

 

$tira_d_rua = array("Rua ", "Av. ", "Alameda ", "Travessa ", "Praça ", "Rodovia ");

 

$rua = str_replace($tira_d_rua,"",$rua);

 

 

Mas alguns endereços possuem nomes de rua como João Praça e Nelson Travessa e esses sobrenomes

 

não podem ser eliminados, então eu preciso de uma função que

 

elimine a primeira palavra antes do primeiro espaço e o primeiro espaço.

 

 

Não consegui encontrar uma. Alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você poderia usar preg_replace

<?php

$array = array(
'Rua Aviador Gomes',
'Av. Coronel Andrade',
'Travessa Santa Luz',
'Praça Carlos Neves' );

var_dump( preg_replace( '/^((Rua|Av\.|Travessa|Praça) )/i', '', $array ) );

/*

array
 0 => string 'Aviador Gomes' (length=13)
 1 => string 'Coronel Andrade' (length=15)
 2 => string 'Santa Luz' (length=9)
 3 => string 'Carlos Neves' (length=12)

*/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado,

 

mas os nomes de rua que chegam não são previstos, e nem se será Rua, Travessa, etc.

 

A unica certeza é que uma dessas palavras será a primeira palavra da string, seguida de um espaço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

os nomes de rua que chegam não são previstos

hum.. melhor tentar prever cara.. pq se você remover qualquer primeira palavra seguida de espaço, você pode corromper os dados de quem enviar o formulário, sem informar nenhum logradouro.

 

->Rua Alcides dos Bobos

o cara pode fazer:

->Alcides dos Bobos

 

ai você remove "Alcides ", que não deveria.

dá para remover qq primeira palavra, mas acho q com isso você vai criar outro problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como o Willian disse ai em cima, remover qualquer primeira palavra é facil usando strpos e substr, porem você deve ter certeza que o seu cadastro esta uniforme e sempre a primeira palavra sera o logradouro, caso não possa garantir isso fica mto dificil sem prever as palavras.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não necessariamente. Você pode combinar substr() com strpos(), condicionando previamente com um cast para integer que dá certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso garantir isso sim, o logradouro é escolhido na primeira vez com um select e é obrigatório, não têm nenhum registro no banco sem logradouro e todos tem o padrão "logradouro " (Logradouro+espaço)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não necessariamente. Você pode combinar substr() com strpos(), condicionando previamente com um cast para integer que dá certo.

Bruno, desculpa, mas sou um eterno iniciante em PHP, poderia explicar melhor? Nao entendi.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu recebo dados de uma tabela no formato:

 

 

Logradouro+espaço+nome

 

Assim "Rua João Gomes Praça"

 

Preciso tirar o logradouro+espaço e ficar só com o nome assim:

 

Gomes Praça

 

 

Então tenho que tirar apenas a primeira ocorrência primeira palavra dos logradouros "Rua ", "Av. ", "Travessa " e "Praça "

 

porque nas tabelas tem ruas com nome tipo "Rua Joao Travessa" e "Av. Carlos Praça" e Aviador abreviado como "Av."

 

 

POr isso tenho que subtrair apenas a primeira palavra

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, aqui vai uma função que acabei de montar, faz o que você precisa, acho que ta bem facil de entender.


$endereco = "rua monsenhor aristides";

retira_primeira_palavra($endereco);

function retira_primeira_palavra($logradouro_completo){
$posicao = strpos($logradouro_completo, " ");
$logradouro_sem_primeira_palavra = substr($logradouro_completo, $posicao);
echo $logradouro_sem_primeira_palavra."<br>";
$logradouro = substr($logradouro_completo, 0, $posicao);
echo $logradouro."<br>";
echo $logradouro_completo;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

POr isso tenho que subtrair apenas a primeira palavra

 

Então deixe assim:

 

$nome = 'Av. Vicente Machado';
echo preg_replace('/^([\S]+ )/', '', $nome);

 

Saída: Vicente Machado

 

 

EDIT:

 

Ops, não vi que já tinham postado a solução. Estava testando o código aqui. :P

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.