Ir para conteúdo
Fórum Script Brasil
  • 0

cURL e Javascript


hitech

Pergunta

Estou desenvolvendo um agregador RSS usando cURL do PHP para pegar a URL do feed e passar para o Javascript fazer o parser. Não posso pegar direto do Javascript porque ele bloqueia URL's de outros domínios e resolvi fazer o parser pelo Javascript e não pelo PHP, pois preciso fazer algumas coisas que só consigo pelo Javascript.

O código é o seguinte:

<?php
    $ch = curl_init("http://feeds.folha.uol.com.br/folha/emcimadahora/rss091.xml");
    $fp = fopen("nvrss.xml", "w");

    curl_setopt($ch, CURLOPT_FILE, $fp);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_exec($ch);
    curl_close($ch);
    fclose($fp);
?>
<script type="text/javascript">   
function GetRSSNews()
{
    var rssDoc = new ActiveXObject("Microsoft.XMLDOM");
    rssDoc.async = false;
    rssDoc.load('nvrss.xml');
    itemNodes = rssDoc.selectNodes("/rss/channel/item");
    rssTitle = new Array;
    rssLink = new Array;
    rssDescription = new Array;
    for(i=0;i<itemNodes.length;i++)
    {
        rssTitle[i] = itemNodes.item(i).getElementsByTagName("title").item(0).text;
        rssLink[i] = itemNodes.item(i).getElementsByTagName("link").item(0).text;
        rssDescription[i] = itemNodes.item(i).getElementsByTagName("description").item(0).text;
    }
}

Pego o feed pelo cURL e mando gravar em um arquivo que então será lido pelo Javascript.

A dúvida é:

É possível passar a variável do cURL para o Javascript diretamente, sem a necessidade de gravar o arquivo?

Obrigado,

Hitech

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Fala amigo!!!

Dá pra fazer sim. Dá um pouco mais de trabalho, mas compensa!

1º Troca o tipo de manipulação de response.

2º Atribui o retorno do curl_exec a uma variável, escapa aspas e retira caracteres newline

3º Substitui o parser do XML

<?php
     $ch = curl_init("http://feeds.folha.uol.com.br/folha/emcimadahora/rss091.xml");
 // 1º
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_HEADER, 0);
 // 2º
     $txt = curl_exec($ch);
     $txt = str_replace("\"","'",$txt);
     $txt = str_replace("\n"," ",$txt);
     curl_close($ch);
 ?>
 <html>
 <head>
 <script type="text/javascript">  
 function GetRSSNews()
 {
     if (window.ActiveXObject){// code for Mozilla, Firefox, Opera, etc.
       var rssDoc = new ActiveXObject("Microsoft.XMLDOM");
     }else if (document.implementation.createDocument){
       var rssDoc = document.implementation.createDocument("","",null);
     }else{
       alert('Your browser cannot handle this script');
       return;
     }  
     rssDoc.async = false;
 // 3º
     rssDoc.loadXML("<?=$txt?>");
     itemNodes = rssDoc.selectNodes("/rss/channel/item");
     rssTitle = new Array;
     rssLink = new Array;
     rssDescription = new Array;
     for(i=0;i<itemNodes.length;i++)
     {
         rssTitle[i] = itemNodes.item(i).getElementsByTagName("title").item(0).text;
         rssLink[i] = itemNodes.item(i).getElementsByTagName("link").item(0).text;
         rssDescription[i] = itemNodes.item(i).getElementsByTagName("description").item(0).text;
         document.getElementById('rss').innerHTML += rssTitle[i] + "
 ";
     }
 }
 </script>
 </head>
 <body onload="java script:GetRSSNews()">
 <div id="rss"></div>
 </body>
 </html>

Editado por Gigabyte
Link para o comentário
Compartilhar em outros sites

  • 0

Eu particularmente usaria outro tipo de handler de nodes, pois se não me engano esse formato de selectNodes é aceito apenas no IE e fica restrito ao formato do XML que teoricamente deveria ser padrão.

Abraços!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...