0

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
  • You can make your own parser for your specific requirement, However, I think it is really reinvent the wheel. Do you have any issue with other xml parser? Commented Dec 3, 2014 at 3:30

1 Answer 1

1
$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

Sign up to request clarification or add additional context in comments.

4 Comments

Fixed a few missing ; but now it looks like it is stuck in the while loop and times out after 30 seconds.
my bad $pos = $x means itll start looking at the same spot everytime finding the same instance over and over... do $pos = $x + 1;
Thanks for your help, I am now getting the same time out error on this line $y = strpos($data, '" type="', $pos); .. not sure if that is where the issue is but I'm still stuck in the while loop somehow.
That fixed it! Thank you so much! I wasn't aware of the xml parser until yesterday, and honestly I didn't understand much of it when it looked at it. This code gets what I need done. Thank you so much for all your help!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.