Pular para o conteúdo

Separar endereço

Responder tópico
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
  • Denunciar
  • Indicar

1. Separar endereço

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

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

2. Minha forma de fazer...

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

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

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 $@$ 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

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 ...

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

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

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 />";
?>

Responder tópico

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Responder tópico

Entre na sua conta para responder.

Fazer login para responder