Ir para conteúdo

POWERED BY:

Arquivado

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

codyzzd

[Resolvido] expressao regular

Recommended Posts

eae galera

 

estava eu aqui aprendendo ER com PHP e CURL pra fazer um cadastro no banco automatico de algumas paginas da internet :P invez de fazer na mao e tals

 

cheguei ate aqui

 

$urlsite= "http://www.sanavita.com.br/loja/pontosSub.aspx?estado=rj&cidade=";	
$html = implode('', file($urlsite));

//pega local
preg_match_all('/(?<=^|>)[^><].*(?=\s-)/', $html, $res_local);

//ler nome 
preg_match_all('/(?<=\s-\s).*(?=<\/b>)/', $html, $res_nome);

//ler endereço
preg_match_all('/(?<=<br>)\s\s\s.*(?=&\#149;\s[a-zA-Z])/', $html, $res_end);

//ler numero
preg_match_all('/[0-9]{3}\s[0-9]{4}-[0-9]{4}\s[0-9]{3}\s[0-9]{4}-[0-9]{4}/', $html, $res_numero);
	
//echo $res_local[0][0]."<br>";
//echo $res_nome[0][0]."<br>";
//echo $res_end[0][0]."<br>";
//echo $res_numero[0][0]."<br>";
//mostra dado pra exemplo
//foreach ($res_local as $local1) {
//   foreach ($local1 as $local2) {
//echo $local2."<br>";
//}
//}

 

 

O selecionamento e tudo funciona

a questao é vo ficar com 4 arrays

 

e agora preciso fazer um INSERT no banco um atras do outro cadastrando tudo tipo

 

 

//exemplo XD

insert $res_local[0][1] $res_nome[0][1] $res_end[0][1] $res_numero[0][1]

insert $res_local[0][2] $res_nome[0][2] $res_end[0][2] $res_numero[0][2]

e assim por diante

 

 

agora como faço seila um foreach seila

 

pra ele ficar andando as 4 arrays junto e cadastrando elas ?

 

ou entao seila guardar as 4 numa so tipo Resultado=>local REsultado=>nome Resultado=>end Resultado=>numero so pra minimizar o trabalho seila algo do genero

 

alguem tem uma luz ?

 

 

um otimo site para aprender ER ja q eu num sabia muito foi esse aqui

 

muito bom http://gskinner.com/RegExr/

muito da hora :P

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://www.naturemaxx.com.br/teste/

 

nessa pagina eu fiz ai

pra mostrar ela ta dando print_r

 

aqui ta o codigo

 

<? 

$urlsite= "http://www.sanavita.com.br/loja/pontosSub.aspx?estado=ac&cidade=";	
$html = implode('', file($urlsite));
// echo $html;


//pega local
preg_match_all('/(?<=^|>)[^><].*(?=\s-)/', $html, $res_local);

//ler nome 
preg_match_all('/(?<=\s-\s).*(?=<\/b>)/', $html, $res_nome);

//ler endereço
preg_match_all('/(?<=<br>)\s\s\s.*(?=&\#149;\s[a-zA-Z])/', $html, $res_end);

//ler numero
preg_match_all('/[0-9]{3}\s[0-9]{4}-[0-9]{4}\s[0-9]{3}\s[0-9]{4}-[0-9]{4}/', $html, $res_numero);
	
//echo $res_local[0][0]."<br>";
//echo $res_nome[0][0]."<br>";
//echo $res_end[0][0]."<br>";
//echo $res_numero[0][0]."<br>";


$arr = array(1, 2, 3, 4);
//foreach ($res_local as $local1) {
//foreach ($local1 as $local2) {
//echo $local2."<br>";
//}
//}

print_r($res_local[0][0]);
echo "<br>";
print_r($res_nome[0][0]);
echo "<br>";
print_r($res_end[0][0]);
echo "<br>";
print_r($res_numero[0][0]);

?>

estado de AC

 

entao so tem 1 registro so pra demontrar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. O print_r no array. Assim.

 

echo 'Local - <br/>';
print_r($res_local[0][0]);
echo 'Nome - <br>';
print_r($res_nome[0][0]);
echo 'Endereço - <br>';
print_r($res_end[0][0]);
echo 'Número - <br>';
print_r($res_numero[0][0]);

Poste aqui o que retornar.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

$count = count($res_local[0]);
for ($i = 0; $i < $count; $i++) {
echo "inserir isso ".$res_local[0][$i]."<br>";
echo "inserir isso ".$res_nome[0][$i]."<br>";
echo "inserir isso ".$res_end[0][$i]."<br>";
echo "inserir isso ".$res_numero[0][$i]."<br><hr>";
}

exemplo de como eu resolvi esse nao e o codigo final mas era oq eu queria vo fazer isso virar uma query do mysql

 

q vai cadastrar tudo q ele pegar da pagina :P e por no banco

 

Q LINDO XD um mini webcraler *.*

Compartilhar este post


Link para o post
Compartilhar em outros sites

for ($i = 0; $i < $count; $i++) {

$sql = 'INSERT INTO cad_ptv (estado,cidade,end,telefone,nome,tipo)

VALUES (

"'.$estado.'",

"'.trim($res_local[0][$i]).'",

"'.trim($res_end[0][$i]).'",

"'.$res_numero[0][$i].'",

"'.trim($res_nome[0][$i]).'",

"'.$tipo.'")';

mysql_query($sql);

echo $sql."<br>";

echo $i." - Cadastrado !";

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.