php如何读取rss,即url地址的xml,并且读取xml后,返回数据给js,因为是通过ajax传递url给php解析,php将解析后的数据返回给js操作,请问如何返回数据给js以便操作呢?? ps:url就是一个rss地址php读取xml代码如下: 
<?php 
  
//RSS源地址列表数组 
/*$rssfeed = $_GET["url"]; 
if($rssfeed == ""){ $rssfeed = "http://rss.sina.com.cn/news/allnews/sports.xml"; }*/ 
$rssfeed = array("http://news.163.com/special/r/00011K6L/rss_newstop.xml", 
"http://rss.sina.com.cn/news/allnews/sports.xml", 
"http://ent.163.com/special/00031K7Q/rss_toutiao.xml", 
"http://tech.163.com/special/00091JPQ/techimportant.xml"); //设置编码为UTF-8 
//www.yuanshi88.com
header('Content-Type:text/html;charset= UTF-8');   
for($i=0;$i<sizeof($rssfeed);$i++){//分解开始 
    $buff = ""; 
    $rss_str = ""; 
    //打开rss地址,并读取,读取失败则中止 
    $fp = fopen($rssfeed[$i],"r") or die("can not open $rssfeed");  
    while ( !feof($fp) ) { 
        $buff .= fgets($fp,4096); 
    } 
    //关闭文件打开 
    fclose($fp); 
    //建立一个 XML 解析器 
    $parser = xml_parser_create(); 
    //xml_parser_set_option -- 为指定 XML 解析进行选项设置 
    xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); 
    //xml_parse_into_struct -- 将 XML 数据解析到数组$values中 
    xml_parse_into_struct($parser,$buff,$values,$idx); 
    //xml_parser_free -- 释放指定的 XML 解析器 
    xml_parser_free($parser); 
    foreach ($values as $val) { 
        $tag = $val["tag"]; 
        $type = $val["type"]; 
        $value = $val["value"]; 
        //标签统一转为小写 
        $tag = strtolower($tag); 
        if ($tag == "item" && $type == "open"){ 
            $is_item = 1; 
        }else if ($tag == "item" && $type == "close") { 
            //构造输出字符串 
            $rss_str .= "<a href='".$link."' target=_blank>".$title."</a><br />"; 
            $is_item = 0; 
        } 
        //仅读取item标签中的内容 
        if($is_item==1){ 
            if ($tag == "title") {$title = $value;}         
            if ($tag == "link") {$link = $value;} 
        } 
    } 
    //输出结果 
    echo $rss_str."<br />"; 

?> 但是总是十分不稳定,有时能读出,有时显示fopen读取错误,并且用ajax传递url过来时,一直都是现实fopen错误 是不是php的一个bug???有其他函数稳定些的吗? 
听说可以用curl,请问curl怎么用?? 

解决方案 »

  1.   

    是不是php的一个bug???有其他函数稳定些的吗?
    因为没时间去看代码所以这里不答了听说可以用curl,请问curl怎么用??  curl其实就是模拟post 和get 它返回的是整个页面的内容.也就是页面输出的是什么他将得到什么然后你还得根据结果进行分析。怎么用的话 网上麻烦gg一下,数不胜数,也不复杂几个参数。
    至于传递数据给js.记得用json格式
      

  2.   

    做一个重试机制,毕竟是ajax找php要数据,php找xml要数据,如果网络有点问题,这个出错是肯定的,你可以预处理先。
      

  3.   

    用curl实现不了你的功能吧,curl在js里不能调用