Ir para conteúdo

POWERED BY:

Arquivado

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

Aprendiz CSS

Capturar parte do Texto

Recommended Posts

Opa!

 

estou usando o seguinte codigo para capturar um conteudo de um site, porém eu gostaria de tratar o conteudo e só exibir uma tabela

 

$result=file_get_contents("http://www.site.com.br");
	if ($result === false){
		echo "erro";
	} else {
		echo $result;
	}

imagine que no retorne venha um código da seguinte forma

 

<h1>Teste</h1>

<p>lorem ipsun...lorem ipsun...lorem ipsun...</p>

<script></script>

<table>

<tr>

<td>texto</td>

</tr>

</table>

 

Como posso fazer para capturar somente o TABLE?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmm, você deverá filtrar isso. Recomendo a utilização do jQuery, que tem a função .contents() que filtra os dados de um determinado grupo de elemento(s), retornando seu conteúdo, além das funções (muito utilizadas) .find() e .html(). Veja a documentação: http://api.jquery.com/contents/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Find tags on an HTML page with selectors just like jQuery.

 

Bibliotecas externas pra fazer o que o PHP já faz nativo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera, quero fazer isso com PHP não faz sentido fazer com jQuery

 

Evandro Oliveira que biblioteca eu poderia usar em PHP para fazer isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você pode fazer assim:

 

HTML

<h1>Teste</h1>
<p>lorem ipsun...lorem ipsun...lorem ipsun...</p>
<script></script>
<table>
<tr>
<td>texto</td>
</tr>
</table>

PHP:

$result=file_get_contents("http://www.site.com.br");
if ($result === false){
    echo "erro";
} else {
    $index_table = strpos( $result,  "<table>" );
    $index_fim_table = strpos( $conteudo, "</table>" );
    $tabela = substr( $conteudo, $index_table, $index_fim_table - $index_table );
    echo $tabela;
}

O substr serve para pegar um conteudo de uma string (primeiro parâmetro) , iniciando de uma determinada posição (segundo parâmetro), e pegar um determinado número de caracteres partindo da posição inicial ( terceiro parâmetro )

 

O problema é que esse código só funciona bem se você quiser pegar o conteúdo da primeira tabela do seu código. Se houver uma segunda e você quiser pegar o conteúdo dessa, então já não funciona.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, mas o jQuery também pode ser integrado ao PHP DOM, dê uma olhada nisso: http://simplehtmldom.sourceforge.net/

Essa é uma biblioteca comum baseada na maneira como jQuery funciona, não tem nada de "integrado".

E é igual o Evandro disse, utilizar bibliotecas externas sendo que existem nativas do PHP que fazem muitissimo bem.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você pode fazer assim:

 

HTML

<h1>Teste</h1>
<p>lorem ipsun...lorem ipsun...lorem ipsun...</p>
<script></script>
<table>
<tr>
<td>texto</td>
</tr>
</table>

PHP:

$result=file_get_contents("http://www.site.com.br");
if ($result === false){
    echo "erro";
} else {
    $index_table = strpos( $result,  "<table>" );
    $index_fim_table = strpos( $conteudo, "</table>" );
    $tabela = substr( $conteudo, $index_table, $index_fim_table - $index_table );
    echo $tabela;
}

O substr serve para pegar um conteudo de uma string (primeiro parâmetro) , iniciando de uma determinada posição (segundo parâmetro), e pegar um determinado número de caracteres partindo da posição inicial ( terceiro parâmetro )

 

O problema é que esse código só funciona bem se você quiser pegar o conteúdo da primeira tabela do seu código. Se houver uma segunda e você quiser pegar o conteúdo dessa, então já não funciona.

 

Assim resolve meu problema!

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só tenha em mente que se o site.com.br adicionar uma tabela antes, se o site.com.br adicionar alguma classe a tabela, se o site.com.br fazer qualquer modificação na tag da tabela, o seu código não funciona mais.

 

Se você ainda estiver disposto a fazer de uma maneira digamos "melhor", é só falar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só tenha em mente que se o site.com.br adicionar uma tabela antes, se o site.com.br adicionar alguma classe a tabela, se o site.com.br fazer qualquer modificação na tag da tabela, o seu código não funciona mais.

 

Se você ainda estiver disposto a fazer de uma maneira digamos "melhor", é só falar.

 

Isso eu sei...

 

qual seria sua outra solução para ficar "melhor"

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu queria algo similar, porém pegar o valor em reis desse site aqui

http://www.mercadobitcoin.com.br/
j
a na entrada ele mostra, nota que ele troca o valor entre duas opções, bitcoin e litecoin, mas acredito que ao entrar bitcoin sera contabilidado primeiro...
Alguma ideia?

ja fiz varios tutos com file_get_contents e tal, mas nada.

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.