duanbing8817 2014-12-03 03:23
浏览 56
已采纳

PHP解析RSS源

I am going to a url, which is just an rss feed, and now I would like to parse the code to return certain bits of information (image urls). I've gotten as far as finding where my information starts but I can not figure out how to read until my delimiting character; which is a ". I would ultimately like to the image urls saved to a text file that my iphone app can reference.

Basically, I want to go to the url.. scan the html code for the image urls that are posted, and return it to a text file.

Here is my current code

     <?php

    $url = 'http://www.actionsportsinc.com/p200285048/recent.rss';

$data = file_get_contents( $url );

// just a test to compare with RSS to see whats being pulled
$file = 'iphoneApp.txt';

// Write the contents back to the file
file_put_contents($file, $data);



if(strpos($data, '<media:content url="') !== FALSE)
{

    $url = "";
    while (! feof($file) && (fgetc($file) != '"')) {
        $url = $url . fgetc($file);
    }

        echo $url; // just trying to print out one url right now to make sure it is actually working... would like to scan entire rss until EOF

}


?>

Here is an example of the rss looks like

<media:content url="http://www.actionsportsinc.com/img/s12/v173/p468059272-4.jpg" type="image/jpeg" medium="image" width="800" height="533"/>
<media:title>D1411HMSF134189JRN</media:title>

I would appreciate any suggestions you all may have. Thank you!

  • 写回答

1条回答 默认 最新

  • dounangshen6553 2014-12-03 03:59
    关注
    $pos = 0
    while($x = strpos($data, '<media:content url="', $pos) !== FALSE)
    {
        $y = strpos($data, '" type="', $pos)
        $imgurl = substr($data, $x+'num of chars in <media:content url="', $y); 
        $pos = $x
        //write imgurl to whatever file you like
    }
    

    untested code I am sure there are syntax issues with it but should give you want you need to do it if you do not want to use an xml parser thats already been made

    what that is going for is iterating through $data starting at $pos if it finds an instance of

    Once it has both those positions itll substr and you need to pull from $data $x(start position of media:content)+ number of chars in your search param and $y start position of the end of the url...

    edit- apparently it do didnt like the $x in there like that so

    $url = 'http://www.actionsportsinc.com/p200285048/recent.rss';
    
    $data = file_get_contents( $url );
    $pos = 0;
    while(strpos($data, '<media:content url="', $pos) !== FALSE)
    {
        $x = strpos($data, '<media:content url="', $pos) ;
        $y = strpos($data, ' type="image', $x);
        $imgurl = substr($data, $x+20, $y - 49 - $x); 
        $pos = $x + 1;
        echo $imgurl . "|| <br>";
        //write imgurl to whatever file you like
    }
    

    That is the exact code pasted straight from my npp

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 高维数据处理方法求指导
  • ¥100 数字取证课程 关于FAT文件系统的操作
  • ¥15 如何使用js实现打印时每页设置统一的标题
  • ¥15 安装TIA PortalV15.1报错
  • ¥15 能把水桶搬到饮水机的机械设计
  • ¥15 Android Studio中如何把H5逻辑放在Assets 文件夹中以实现将h5代码打包为apk
  • ¥15 使用小程序wx.createWebAudioContext()开发节拍器
  • ¥15 关于#爬虫#的问题:请问HMDB代谢物爬虫的那个工具可以提供一下吗
  • ¥15 vue3+electron打包获取本地视频属性,文件夹里面有ffprobe.exe 文件还会报错这是什么原因呢?
  • ¥20 用51单片机控制急停。