Separar endereço

1. Separar endereço

Michele
clara_atalaia

(usa Fedora)

Enviado em 10/03/2008 - 11:15h

Bom dia Pessoal!

Gostaria de saber como posso separar informações de um endereço com php por exemplo (AV DAS AMERICAS, 2434 blc 5, grupo 520) ficaria assim:
Endereço: AV DAS AMERICAS
Número: 2434
Complemento:blc 5, grupo 520

Por favor quem puder me ajudar ficarei muito grata.

Clara


  


2. Minha forma de fazer...

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

Enviado em 10/03/2008 - 11:53h

Sou programador C/C++ e não PHP, apesar de só gostar de usar PHP para desenvolver websites e estar sempre fazendo isso, não me considero um programador PHP.

O que posso lhe dizer é que como programador C/C++ eu utilizaria o comando substr (pode ser que tenha um mais prático).

De uma olhada no site do PHP, lá tem bastante exemplos desse comando e como você pode fazer para encontrar uma forma simples de controla-lo:

http://br2.php.net/manual/en/function.substr.php

Se tiver dificuldades me manda um e-mail pelo site que lhe ajudo de forma mais detalhada...


3. Re: Separar endereço

Daniel Augusto de Oliveira
spychaser

(usa Debian)

Enviado em 12/03/2008 - 16:18h

Como o companheiro disse acima, você pode usar o substr, mas nesse caso acharia melhor usar o explode() que retornaria um array.
Mas já te digo que isso vai dar uma dor de cabeça do tamanho de um bonde.
Imagine uma simples modificação no endereço por parte de quem digita.
Ex:
AV DAS AMERICAS 2434 blc 5, grupo 520
ou
AV DAS AMERICAS 2434 blc 5 grupo 520

e por ai vai. Fica impossível você conseguir separar endereço, numero e complemento. Tive que importar uma base de um cliente com 70000 cadastros. Foi impossível conseguir separar isso.

Abraço


4. Re: Separar endereço

Luis Carlos de Brito
luiscarlos

(usa Fedora)

Enviado em 12/03/2008 - 19:41h

a função explode é o ideal para este tipo de caso, no entanto, como nosso colega informou, se mudar algo no endereço estamos "ferrados", mas para isso tem solução, crie no formulario tres campos para informar o endereço endereço:
endereço --------
numero --------
complemento --------

caso vc queira manter apenas um campo no BD para guardar estas informações, vc pode juntar o valor das tres separando as com virgula ou outro caractere, aconselho utilizar caracteres que vc acredita o que o usuario não irá informar no seu formulario como [email protected]$ para separador dos tres campos, depois vc separa a informação com explode.
Essa solução eu não aconselharia, é POG na veia, aconselho criar os tres campos no BD e registrar as informações separadamente.


5. Fazendo o impossível... Ao estilo C

Rodrigo Ferreira Valentim
engos

(usa openSUSE)

Enviado em 14/03/2008 - 15:43h

<?php

$array = array('AV DAS AMERICAS, 2434 blc 5, grupo 520', 'Av Eng. Januário A. Santos 300', 'PRAIA DO FLAMENGO, 154 1º ANDAR - PARTE');

for ($i = 0; $i < 3; $i++) {
echo "$array[$i] <br>";
$end = "";
$num = "";
$comp = "";

for($count = 0; $count < strlen( $array[$i] ); $count++ ) {
if( is_numeric( $array[$i][$count] ) && empty($end) )
$end = substr( $array[$i], 0, $count );

if( !is_numeric( $array[$i][$count] ) && !empty($end) ) {
$num = substr( $array[$i], strlen($end), ($count - strlen($end)) );

if( strlen($array[$i]) > (strlen($end) + strlen($num)) )
$comp = substr( $array[$i], $count );

echo "$end * $num * $comp <br>";

break;
} else if( strlen($array[$i]) == ($count+1) ) {
$num = substr( $array[$i], strlen($end) );
echo "$end * $num * $comp <br>";
}
}
}
?>



6. Eu acho ...

Thiago Fernandes Gonzaga
thiagotj

(usa Suse)

Enviado em 20/03/2008 - 15:13h

Buenas, como você vai receber esta informação de um formulário o melhor a se fazer seria colocar no HTML um "textfield" dentro de um "form", Mais ou menos assim:
<form id="form1" name="form1" method="post" action="">
<p>Endereço
:
<input type="text" name="edtEndereco" id="edtEndereco" />
</p>
<p>Numero:
<input type="text" name="edtNumero" id="edtNumero" />
</p>
<p>Bairro:
<input type="text" name="edtBairro" id="edtBairro" />
</p>
<p>Cidade:
<input type="text" name="edtCidade" id="edtCidade" />
</p>
</form>
E assim por diante, quantos campos você quiser. Fazendo dessa maneira você tem otimiza o seu código pois tem que fazer menos voltas e também tudo separadinho, mas as meneiras ditas acima também são válidas.


7. use a funçaõ explode

Estevam Mendes
estevam

(usa Ubuntu)

Enviado em 20/03/2008 - 15:59h

///Estevam Levitron (Viva o Linux)

///$endereco = o endereco que vc quer separar
/// explode('separador',variavel);///

$endereco_novo = explode(',',$endereco);

print 'Rua'.$endereco_novo[0].'<br>';
print 'Numero'.$endereco_novo[1].'<br>';
print 'Compl'.$endereco_novo[2].'<br>';


8. Reparar endereços

Reinaldo Ortlieb
ortlieb

(usa Nenhuma)

Enviado em 18/11/2010 - 19:58h

O script do Engos para reparar endereços, funciona muito bem.

Fiz uma implementação para usar no MySQL com INSERT e UPDATE:

<?php

function End_Repair($endereco, $cur = '') {
$array = array($endereco);

$search = array(',');
$replace = '';

for ($i = 0; $i < 1; $i++) {
$end = "";
$num = "";
$comp = "";
for ($count = 0; $count < strlen($array[$i]); $count++) {
if (is_numeric($array[$i][$count]) && empty ($end))
$end = substr($array[$i], 0, $count);
if (!is_numeric($array[$i][$count]) && !empty ($end)) {
$num = substr($array[$i], strlen($end), ($count - strlen($end)));
if (strlen($array[$i]) > (strlen($end) + strlen($num)))
$comp = substr($array[$i], $count);
switch ($cur) {
case "end":
return str_replace($search, $replace, $end);
break;
case "num":
return $num;
break;
case "comp":
return $comp;
break;
}
break;
}
else
if (strlen($array[$i]) == ($count + 1)) {
$num = substr($array[$i], strlen($end));
switch ($cur) {
case "end":
return str_replace($search, $replace, $end);
break;
case "num":
return $num;
break;
case "comp":
return $comp;
break;
}
}
}
}
}

echo "End.: " . End_Repair("AV DAS AMERICAS, 2434 AP 8 BL C-5, grupo 520", "end") . "<br />";
echo "Num.: " . End_Repair("AV DAS AMERICAS, 2434 AP 8 BL C-5, grupo 520", "num") . "<br />";
echo "Comp.: " . End_Repair("AV DAS AMERICAS, 2434 AP 8 BL C-5, grupo 520", "comp") . "<br /><br />";

echo "End.: " . End_Repair("Av Eng. Januário A. Santos 300", "end") . "<br />";
echo "Num.: " . End_Repair("Av Eng. Januário A. Santos 300", "num") . "<br />";
echo "Comp.: " . End_Repair("Av Eng. Januário A. Santos 300", "comp") . "<br /><br />";

echo "End.: " . End_Repair("PRAIA DO FLAMENGO, 154 1º ANDAR - PARTE", "end") . "<br />";
echo "Num.: " . End_Repair("PRAIA DO FLAMENGO, 154 1º ANDAR - PARTE", "num") . "<br />";
echo "Comp.: " . End_Repair("PRAIA DO FLAMENGO, 154 1º ANDAR - PARTE", "comp") . "<br /><br />";
?>






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts