merlinus 1 Denunciar post Postado Julho 16, 2011 Saudações, tive a ideia que minha aplicação capturasse as informações de um produto do site de cadastro de material e retornasse alguns valores. então eu entraria com o codigo do produto $id="2173077"; $WebSite = 'http://www.bec.sp.gov.br/BEC_Catalogo/CatalogDetalhe.aspx?chave=&cod_id='.$id; $bec=file_get_contents( $WebSite ); Ate ai eu consegui precisaria que ele me retornasse $Classe = 8930 $Material = 9750 - ACUCAR $Item = 2173077 - ACUCAR OBTIDO DA CANA DE ACUCAR,CX. C/336 SACHES DE 6 GRAMAS CADA $descrição = acucar; obtido da cana acucar, refinado granulado; com aspecto cor ,cheiro prprio, sabor doce; com teor de sacarose minimo de 99%p/p e umidade maxima de 0,4% p/p; sem fermentacao,isento de sujidades,parasitas, materiais terrosos e detritos animais ou vegetais; acondicionado em caixa com 336 saches de 6 gr cada e validade minima de 12 meses a contar da data da entrega; e suas condicoes deverao estar de acordo com a resolucao 271 de 22 de stembro de 2005 e suas alteracoes posteriores; produto sujeito a verificacao no ato da entrega aos proced. Administrativos determinados pela anvisa Esse ultimo aparece como "detalhe do produto" Tive essa ideia depois de ver um caso parecido que o Andrey Knupp resolveu com Domxpath, mas não consegui Entender como se monta a query para usar. Compartilhar este post Link para o post Compartilhar em outros sites
jcalebe 0 Denunciar post Postado Julho 16, 2011 Dá uma olhada nesse exemplo que criei: <?php //Abre o site $fp = @fopen('http://exemplo.com/', 'r'); $char = ''; while(!feof($fp)) { $char .= fgetc($fp); } fclose($fp); //Retorna todo o texto que está entre <span> e </span> para um array preg_match_all("/<span>(.*)</span>/i", $char, $matches); //Veja o array criado var_dump($matches); ?> É só um exemplo pra ser estudado, melhorado e adaptado. Compartilhar este post Link para o post Compartilhar em outros sites
merlinus 1 Denunciar post Postado Julho 16, 2011 tentei, está dando: Warning: preg_match_all() [function.preg-match-all]: Unknown modifier 'p' in C:\webserver\apache\htdocs\bec.php on line 12 NULL Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Julho 16, 2011 Jcalebe, que desperdício de processamento isso aí hein .. //Abre o site $fp = @fopen('http://exemplo.com/', 'r'); $char = ''; while(!feof($fp)) { $char .= fgetc($fp); } fclose($fp); Não precisa disso tudo, com o file_get_contents, você já resolve .. <?php ini_set( 'display_errors', 'On' ); $Codigo = '2173077'; $Website = sprintf( 'http://www.bec.sp.gov.br/BEC_Catalogo/CatalogDetalhe.aspx?chave=&cod_id=%d', $Codigo ); $DOMDocument = new DOMDocument( '1.0', 'utf-8' ); $DOMDocument->preserveWhiteSpace = false; $DOMDocument->loadHTML( file_get_contents( $Website ) ); $DOMXPath = new DOMXPath( $DOMDocument ); $i = 0; foreach( $DOMXPath->query( './/table/tr/td/span[@class="labelConteudo"]' ) as $Nodes ){ foreach( $Nodes->childNodes as $Node ){ $Name = str_replace( ':', null, utf8_decode($Node->parentNode->parentNode->parentNode->getElementsByTagName( 'span' )->item( 0 )->nodeValue) ); $Dados[ $Name ] = utf8_decode( $Node->nodeValue ); } $i++; } echo '<pre>'; print_r( $Dados ); Saída: andrey@andrey:~$ php -f /var/www/index.php Array ( [Grupo] => 89 - GENEROS ALIMENTICIOS [Classe] => 8930 - ACUCARES E ARTIGOS PARA CONFEITARIAS [Material] => 9750 - ACUCAR [item] => 2173077 - ACUCAR OBTIDO DA CANA DE ACUCAR,CX. C/336 SACHES DE 6 GRAMAS CADA [situação] => Ativo [Natureza de Despesa] => 33903010 [33909213] => 33909213 [33909220] => 33909220 ) andrey@andrey:~$ Compartilhar este post Link para o post Compartilhar em outros sites
merlinus 1 Denunciar post Postado Julho 16, 2011 Andrey cara, nunca falei isso para homem nenhum, mas te amo cara.... :-) Funcionou perfeitamente, vlw. Compartilhar este post Link para o post Compartilhar em outros sites