Gantuz 0 Denunciar post Postado Fevereiro 13, 2009 Boa Tarde Pessoal! Eu criei esse código abaixo para poder ler um arquivo HTML e seu conteúdo. A intenção era navegar pelas Tags para poder pegar alguns elementos. Está funcionando como eu queria, porém, esse esqueminha está lendo um único arquivo. COMO EU PODERIA FAZER, PARA QUE ELE LESSE E APLICASSE ESTE CÓDIGO QUE ESTOU MONTANDO PARA TODOS OS ARQUIVOS .HTM QUE TENHO EM UM DIRETÓRIO? Porque, digamos que tenho 1450 arquivos .HTM, eu não vou fazer isso, um por um, correto?! Qual o meio de se aplicar de maneira totalizada? Inclusive já tentei criando funções, mas como sou iniciante em PHP, não estou muito familiarizado com criações de funções e não deu muito certo. Segue o código abaixo: <?php $doc = new DOMDocument; $doc->loadHTMLfile('clipping017.htm'); //Pegando o Elemento <body> $body = $doc->getElementsByTagName('body'); //Para poder pegar o texto 'Estado de Minas | 30 de Fevereiro de 2007 | Para crescer junto e as Imagens' foreach($body as $body){ $table = $body->getElementsByTagName('table'); $imagem = $body->getElementsByTagName('img'); //Pegar o Texto foreach($table as $table){ $td = $table->getElementsByTagName('td'); foreach($td as $td){ $font = $td->getElementsByTagName('font'); foreach($font as $font){ $texto = trim($font->nodeValue); break; } } } $img=array(); $x=0; //Pegar as Imagens foreach($imagem as $imagem){ if($imagem->getAttribute('src')!=='dot_transp.gif'){ $imgSrc = $imagem->getAttribute('src'); $imgW = $imagem->getAttribute('width'); $imgH = $imagem->getAttribute('height'); $img[$x] = '<'.$imagem->tagName.' src="'.$imgSrc.'" width="'.$imgW.'" heigth="'.$imgH.'">'; $x++; } } } //Separando o texto para poder retornar titulo e data $texto = explode("|",$texto); //Recebe o Titulo ::: Estado de Minas $titulo = trim($texto[0]); //Recebe a data por extenso $data = explode(" de ",$texto[1]); //Condição para transformar o mes por escrito em numeral if($data[1]=='Janeiro'){ $data[1]="01"; } elseif($data[1]=='Fevereiro'){ $data[1]="02"; } elseif($data[1]=='Março'){ $data[1]="03"; } elseif($data[1]=='Abril'){ $data[1]="04"; } elseif($data[1]=='Maio'){ $data[1]="05"; } elseif($data[1]=='Junho'){ $data[1]="06"; } elseif($data[1]=='Julho'){ $data[1]="07"; } elseif($data[1]=='Agosto'){ $data[1]="08"; } elseif($data[1]=='Setembro'){ $data[1]="09"; } elseif($data[1]=='Outubro'){ $data[1]="10"; } elseif($data[1]=='Novembro'){ $data[1]="11"; } elseif($data[1]=='Dezembro'){ $data[1]="12"; } else{ print "A data nao e' valida!"; } //Data no formato dd/mm/aaaa. $data = trim($data[0].'/'.$data[1].'/'.$data[2]); //var_dump($titulo,$data,$img); print' <table border="1" align="center"> <tr> <td align="center">'.$titulo.'<font color="red"><strong> ::: ISTO E\' APENAS UM TESTE :::</strong></font></td> </tr> <tr> <td>Data da Reportagem: '.$data.'</td> </tr>'; foreach($img as $img){ print' <tr> <td align="center">'.$img.'</td> </tr>'; } print' </table>'; ?> AGRADEÇO DESDE JÁ TODA AJUDA FORNECIDA. GABRIEL ANTUNES Compartilhar este post Link para o post Compartilhar em outros sites
PortellaSP 0 Denunciar post Postado Fevereiro 13, 2009 Já que teu script funciona você precisa fazer agora um tipo de laço pra ele.. em $doc->loadHTMLfile('clipping017.htm'); em vez de colocar um arquivo seria uma variavel. $var Eu fiz uma vez algo parecido passando por exemplo uma variavel separada por "-" onde cada campo era um arquivo q eu precisava.. por exemplo no seu caso: "pagina1.html-pagina2.html-pagina3.html" eu passava esse texto como variavel pra uma pagina. Nessa pagina eu separava os campos pelo "-" . EX: $var="pagina1.html-pagina2.html-pagina3.html"; $pega=explode("-",$var); $conta=count($pega); for($i=0;$i<=$conta;$i++) { //AQUI DENTRO você FAZ O LACO COM A TUA FUNCAO EX: $doc->loadHTMLfile($pega[$i]); } assim ele faz o script com todos os teus arquivos. Agora você como quer fazer para passar os arquivos. Espero ter ajudado AbraçO! Compartilhar este post Link para o post Compartilhar em outros sites
Gantuz 0 Denunciar post Postado Fevereiro 13, 2009 Já que teu script funciona você precisa fazer agora um tipo de laço pra ele.. em $doc->loadHTMLfile('clipping017.htm'); em vez de colocar um arquivo seria uma variavel. $var Eu fiz uma vez algo parecido passando por exemplo uma variavel separada por "-" onde cada campo era um arquivo q eu precisava.. por exemplo no seu caso: "pagina1.html-pagina2.html-pagina3.html" eu passava esse texto como variavel pra uma pagina. Nessa pagina eu separava os campos pelo "-" . EX: $var="pagina1.html-pagina2.html-pagina3.html"; $pega=explode("-",$var); $conta=count($pega); for($i=0;$i<=$conta;$i++) { //AQUI DENTRO você FAZ O LACO COM A TUA FUNCAO EX: $doc->loadHTMLfile($pega[$i]); } assim ele faz o script com todos os teus arquivos. Agora você como quer fazer para passar os arquivos. Espero ter ajudado AbraçO! Se ajudou???????????????????????? Cara você mostrou a luz no fim do túnel... rssrrsrsrs Valeu mesmo... coisa boa.... só tive que fazer uma mudançazinha pra funcionar.... Utilizei uma função chamada glob, e pedi que fosse feito para todos os arquivos chamados HTM e joguei dentro de uma variável... o que me retornou um array, e com isso eu fui fechando cada loop fui dando unset, aí eu adquiria outro elemento do array para abrir e no final joguei para variáveis correspondende a titulo, a data e as imagens. Mas peguei sua idéia na integra. Como notei que tava dando erro no load, achei que teria que fazer exatamente o contrario... $arqHTM = glob('*.htm'); foreach($arqHTM as $arqHTM){ (...) http://forum.imasters.com.br/public/style_emoticons/default/worshippy.gif Valeu mesmo camarada!!!!!Muito Obrigado pela ajuda!!!! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Gantuz. unset($doc); } Compartilhar este post Link para o post Compartilhar em outros sites
PortellaSP 0 Denunciar post Postado Fevereiro 13, 2009 Que bom que ajudou brother! Quem quiser add pra gente trocar idéia tamo aí. davidportella@hotmail.com Compartilhar este post Link para o post Compartilhar em outros sites
Gantuz 0 Denunciar post Postado Fevereiro 13, 2009 Que bom que ajudou brother! Quem quiser add pra gente trocar idéia tamo aí. davidportella@hotmail.com POw, jah eh mesmo.... Anota o meu: gabriel_muleque@hotmail.com (MSN) // gabrielantunes.cruz@gmail.com (email) Abraços!!! Compartilhar este post Link para o post Compartilhar em outros sites