Search code examples
phpsimplepie

SimplePie RSS not accepting variable with comma separated strings


I'm trying to use SimplePies "$feed->set_feed_url (array());" function but I am having major difficulty understanding why it wont accept my values.

When I add the URLS manually (i.e directly below), they work just fine. The feeds go through ok and displays the feeds as needed.

  $feed ->set_feed_url (array(
    'http://www.theverge.com/tag/rss',
    'http://feeds.ign.com/ign/all'
  ));

I have URLS in a database table that I am pulling out like normal with a while loop. I then append a comma and remove the trailing comma so its nice for the SimplePie array. Like so:

while($row = mysqli_fetch_array($pullAllAccountsDoIt)){
    $result4mdb .= $row[0] . ",";
}

$result4mdb = substr($result4mdb, 0, strlen($result4mdb) -1);
 echo "the result is: " . $result4mdb;

When I do this, and echo out "$result4mdb", it prints out: the result is: http://www.gamespot.com/feeds/mashup/,http://www.theverge.com/tag/rss

Meaning that the variable is good and printing out what i need. So far so good. I then go into the simplePie code, put in my varialble like so:

$feed ->set_feed_url (array($result4mdb));

and nothing happens. I don't get any errors or anything, just that the page stays blank and nothing comes up.

For testing, I do a gettype($result4mdb); and it tells me that the variable is a "string" and again, the output of this variable when echoed is the URLS it got from the database so I KNOW that the whole process so far is working.

For further testing, I go to the database and remove one of the URLS so that when queried, that it returns one value, and all of the sudden SimplePie works.

I've been searching for a good day and a half now, trying different things and googling as much as possible but to no avail. I just cant quite get it.

I'm at my wits end. Any assistance as to why this isn't working is GREATLY appreciated.

Thank you in advance everyone


Solution

  • You're just producing a string containing comma seperated values. What you need is an array, so just explode() your string:

    Change:

    $feed ->set_feed_url (array($result4mdb));
    

    to

    $feed ->set_feed_url (explode(',', $result4mdb));
    

    More elegant version, change:

    while($row = mysqli_fetch_array($pullAllAccountsDoIt)){
        $result4mdb .= $row[0] . ",";
    }
    

    to

    while($row = mysqli_fetch_array($pullAllAccountsDoIt)){
        $result4mdb[] = $row[0];
    }
    

    This way you're not creating a string that needs to be exploeded, but create an array at first.