Ir para conteúdo

POWERED BY:

Arquivado

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

leco_123

[Resolvido] como usar file_get_contents

Recommended Posts

Olá pessoa estou tentando pegar a tabela de campeonato do site e desponibilizar no site que estou desenvolvendo, mais o que acontece é que somente consigo pegar o site inteiro e queria somente a tabela de classificação esse foi o código que fiz até o momento, não tenho noção de como continuar, desde de já agradeço.

<?php

/* pegando url do site futsal parana*/
$url = file_get_contents('http://www.futsalparana.com.br/index.php?option=com_joomsport&view=ltable&sid=13&gr_id=0&Itemid=91');
echo $url;
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, veja se é o que você precisa

<?php
       $DOMDocument = new DOMDocument( '1.0', 'utf-8' );
       $WebSite = 'http://www.futsalparana.com.br/index.php?option=com_joomsport&view=ltable&sid=13&gr_id=0&Itemid=91';
       $DOMDocument->preserveWhiteSpace = false;
       @$DOMDocument->loadHTML( file_get_contents( $WebSite ) );
       $DOMXPath = new DOMXPath( $DOMDocument );
       foreach( $DOMXPath->query( './/table[@id="s_table_0"]/tbody/tr[@class=contains( @class, "etblraw" )]/td[ preceding-sibling::* ]' ) as $Nodes ){
                foreach( $Nodes->childNodes as $Node ){
                         $Data[] = utf8_decode( preg_replace( '/\s/', null, $Node->nodeValue ) );
                }
       }
       echo '<pre>';
       print_r(  array_filter( $Data )  );

Saída:

Array
(
   [2] => PatoFutsal
   [3] => 8
   [4] => 7
   [5] => 1
   [7] => 2.13
   [8] => 18
   [9] => 34
   [10] => 16
   [11] => 22
   [14] => SMEL/Araucária
   [15] => 8
   [16] => 5
   [17] => 2
   [18] => 1
   [19] => 1.46
   [20] => 11
   [21] => 35
   [22] => 24
   [23] => 17
   [26] => LojãodoKeimaFutsal
   [27] => 9
   [28] => 5
   [29] => 2
   [30] => 2
   [31] => 1.65
   [32] => 11
   [33] => 28
   [34] => 17
   [35] => 17
   [38] => A.E.C./Camifra/Siviero
   [39] => 9
   [40] => 4
   [41] => 1
   [42] => 4
   [43] => 0.96
   [44] => -1
   [45] => 25
   [46] => 26
   [47] => 13
   [50] => Cipauto/Romera/ToledoFutsal
   [51] => 8
   [52] => 4
   [53] => 1
   [54] => 3
   [55] => 1.29
   [56] => 5
   [57] => 22
   [58] => 17
   [59] => 13
   [62] => LaboratórioSantaMaria
   [63] => 8
   [64] => 4
   [66] => 4
   [67] => 0.83
   [68] => -5
   [69] => 24
   [70] => 29
   [71] => 12
   [74] => Pitanga/Futsal/UCP
   [75] => 8
   [76] => 3
   [77] => 1
   [78] => 4
   [79] => 0.61
   [80] => -13
   [81] => 20
   [82] => 33
   [83] => 10
   [86] => ClubeAtléticoCantagalo
   [87] => 8
   [88] => 3
   [89] => 1
   [90] => 4
   [91] => 0.83
   [92] => -4
   [93] => 20
   [94] => 24
   [95] => 10
   [98] => UnipaMorumbiFutsal
   [99] => 8
   [100] => 2
   [101] => 1
   [102] => 5
   [103] => 0.82
   [104] => -3
   [105] => 14
   [106] => 17
   [107] => 7
   [110] => CambéFutsal
   [111] => 8
   [112] => 2
   [114] => 6
   [115] => 0.93
   [116] => -2
   [117] => 28
   [118] => 30
   [119] => 6
   [122] => C.E.R.Aquárius
   [123] => 8
   [124] => 1
   [126] => 7
   [127] => 0.51
   [128] => -17
   [129] => 18
   [130] => 35
   [131] => 3
)

Compartilhar este post


Link para o post
Compartilhar em outros sites

muito obrigado mesmo esta precisando muito desse código

 

se for possível teria como comentar o código pra que eu possa enternder eu não estou entendendo o que segnifica e o que faz algumas linhas

 

desde já obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara o DOMXPath, não tem como eu te explicar todas as funções dele aqui não

pois é muita coisa :P, então vou te explicar o que a query faz ok ? segue o código abaixo:

<?php
       /**
        * Nova instância de DOMDocument
        */
       $DOMDocument = new DOMDocument( '1.0', 'utf-8' );
       /**
        * URL Do site que você deseja extrair o conteudo
        */
       $WebSite = 'http://www.futsalparana.com.br/index.php?option=com_joomsport&view=ltable&sid=13&gr_id=0&Itemid=91';
       /**
        * Não preservar espaços em branco redundantes
        */
       $DOMDocument->preserveWhiteSpace = false;
       /**
        * Carrega o conteudo do site 
        */
       @$DOMDocument->loadHTML( file_get_contents( $WebSite ) );
       /**
        * Nova instância do DOMXPath
        */
       $DOMXPath = new DOMXPath( $DOMDocument );
       /**
        * Procura no Documento, um elemento 'table' que o id é igual a .. então avança pra seu filho 'tbody'
        * depois avança para o filho de 'tbody', que é o 'tr' que o atributo 'class' contenha uma substring de 'etblraw'
        * então avança para 'td', que recupera todos os valores de cada 'td' que não seje a primeira coluna na tabela
        * porque é a sequencia deles, creio que não seje útil pra você
        */
       foreach( $DOMXPath->query( './/table[@id="s_table_0"]/tbody/tr[@class=contains( @class, "etblraw" )]/td[ preceding-sibling::* ]' ) as $Nodes ){
                /**
                 * Procura por todos os filhos de TD, que pode ser hrefs, ou textos .. etc
                 */
                foreach( $Nodes->childNodes as $Node ){
                         /**
                          * Monta um array com os valores encontrados, removendo os espaços em brancos adicionais 
                          */
                         $Data[] = utf8_decode( preg_replace( '/\s/', null, $Node->nodeValue ) );
                }
       }
       echo '<pre>';
       /**
        * Filtra todo o array, removendo índices vazios 
        */
       print_r(  array_filter( $Data )  );

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa muito obrigado pela explicação consegui entede, ficou muito claro, aparte comentada, creio muita gente vai usar este post.

 

tenho só mais uma duvida como que faço para colocar essas informações em uma tabela, conforme mostra no site federação paranaense, sou meio leigo neste assunto, me desculpe se estou fazendo alguma pergunta, vamos dizer assim boba, pra mim está sendo muito útil mesmo e como disse tenho só agradecer e parabéns por tanta sabedoria assim.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opá, tem sim, foi mal a demora, tava resolvendo uns problemas aqui ..

enfim, basta você fazer um implode nos valores retornados ..

   $Data = array_chunk( $Data, 12 );
   foreach( $Data as $index => $data ){
        foreach( $Data[ $index ] as $values ){
              if( is_numeric( $values ) ){
                  $val[ $index ][] = intval( $values );
              }else{
                  $val[ $index ][] = sprintf( "'%s'", $values );
              }
        }
   }
   for( $i = 0; $i < sizeof( $val ); ++$i ){
        $preparedValues[] = sprintf( '(%s)',  implode( ', ', $val[$i] ) );
   }
   print_r( $preparedValues );

A Saída:

Array
(
   [0] => ('', '', 'PatoFutsal', 8, 7, 1, 0, 2, 18, 34, 16, 22)
   [1] => ('', '', 'SMEL/Araucária', 8, 5, 2, 1, 1, 11, 35, 24, 17)
   [2] => ('', '', 'LojãodoKeimaFutsal', 9, 5, 2, 2, 1, 11, 28, 17, 17)
   [3] => ('', '', 'A.E.C./Camifra/Siviero', 9, 4, 1, 4, 0, -1, 25, 26, 13)
   [4] => ('', '', 'Cipauto/Romera/ToledoFutsal', 8, 4, 1, 3, 1, 5, 22, 17, 13)
   [5] => ('', '', 'LaboratórioSantaMaria', 8, 4, 0, 4, 0, -5, 24, 29, 12)
   [6] => ('', '', 'Pitanga/Futsal/UCP', 8, 3, 1, 4, 0, -13, 20, 33, 10)
   [7] => ('', '', 'ClubeAtléticoCantagalo', 8, 3, 1, 4, 0, -4, 20, 24, 10)
   [8] => ('', '', 'UnipaMorumbiFutsal', 8, 2, 1, 5, 0, -3, 14, 17, 7)
   [9] => ('', '', 'CambéFutsal', 8, 2, 0, 6, 0, -2, 28, 30, 6)
   [10] => ('', '', 'C.E.R.Aquárius', 8, 1, 0, 7, 0, -17, 18, 35, 3)
)

 

Depois outro implode pra colocar no SQL, ficando assim:

printf( 'INSERT INTO `tabela`( `campo1`, `campo2`, `campo3` ... ) VALUES %s', implode( ',', $preparedValues ) );

Saída:

INSERT INTO `tabela`( `campo1`, `campo2`, `campo3` ... ) VALUES ('', '', 'PatoFutsal', 8, 7, 1, 0, 2, 18, 34, 16, 22),
('', '', 'SMEL/Araucária', 8, 5, 2, 1, 1, 11, 35, 24, 17),('', '', 'LojãodoKeimaFutsal', 9, 5, 2, 2, 1, 11, 28, 17, 17),
('', '', 'A.E.C./Camifra/Siviero', 9, 4, 1, 4, 0, -1, 25, 26, 13),('', '', 'Cipauto/Romera/ToledoFutsal', 8, 4, 1, 3, 1, 5, 22, 17, 13),
('', '', 'LaboratórioSantaMaria', 8, 4, 0, 4, 0, -5, 24, 29, 12),('', '', 'Pitanga/Futsal/UCP', 8, 3, 1, 4, 0, -13, 20, 33, 10),
('', '', 'ClubeAtléticoCantagalo', 8, 3, 1, 4, 0, -4, 20, 24, 10),('', '', 'UnipaMorumbiFutsal', 8, 2, 1, 5, 0, -3, 14, 17, 7),
('', '', 'CambéFutsal', 8, 2, 0, 6, 0, -2, 28, 30, 6),('', '', 'C.E.R.Aquárius', 8, 1, 0, 7, 0, -17, 18, 35, 3)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pode deixar vou fazer isso sim por enquanto era isso Andrey

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.