Hoi,

Ik ben bezig met het schrijven van een script om een rss feed uit te lezen op mijn website. Het probleem is alleen dat ik geen gebruik kan maken van fopen (); omdat ik volgens de instellingen in mijn php.ini geen remote files kan openen.

Nu schijnt er een javascript alternatief te zijn om toch remote files te openen. Weet iemand misschien hoe dit werkt?

Alvast bedankt!
cURL verwijderd geen tags.
Dat doe je dus ergens zelf.
En je gaat al helemaal niet met preg_* op een xml bestand werken.
Goed om het even overzichtelijk te houden: ik heb het .rss bestand dus benaderd en in een string gestopt. Als ik deze string echo is de code uitvoer:

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<link/>http://twitter.com/nielsborn
<atom:link rel="self" href="http://twitter.com/statuses/user_timeline/39709745.rss" type="application/rss+xml">
<description>Twitter updates from Niels Born / nielsborn.</description>
<language>en-us</language>
<ttl>40</ttl>
<item>
<description>nielsborn: Super filmpje op: http://bit.ly/2SLLBh Lijst</description>
<pubdate>Wed, 07 Oct 2009 14:49:38 +0000</pubdate>
<guid>http://twitter.com/nielsborn/statuses/4683644158</guid>
<link/>
http://twitter.com/nielsborn/statuses/4683644158
</item>
</atom:link>
</channel>
</rss>


Hoe kan ik deze string ontleden?
Als het goed is staat er nog een bericht in (iig dat zit in dat .rss gedoe).
Maar je hebt dus een xml string terug gekregen dus dan kan je met [php]dom[/php] of [php]simplexml[/php] aan de slag.
Als je die twee niet tot de beschikking hebt, raad ik je aan om te vragen aan je host om dat aan te zetten, aangezien goede xml support erg belangrijk is. Anders naar een andere host gaan.
Ik heb geen kennis van dom of simplexml. En uit de voorbeelden word ik ook niets wijzer. Heeft iemand misschien ervaring met het ontleden van een xml string met dom of simplexml?
<?php

$string = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>Twitter / nielsborn</title>
    <link>http://twitter.com/nielsborn</link>
    <atom:link type="application/rss+xml" href="http://twitter.com/statuses/user_timeline/39709745.rss" rel="self"/>
    <description>Twitter updates from Niels Born / nielsborn.</description>
    <language>en-us</language>
    <ttl>40</ttl>
  <item>
    <title>nielsborn: testtesttesttesttest</title>
    <description>nielsborn: testtesttesttesttest</description>
    <pubDate>Sun, 22 Nov 2009 19:08:09 +0000</pubDate>
    <guid>http://twitter.com/nielsborn/statuses/5952620172</guid>
    <link>http://twitter.com/nielsborn/statuses/5952620172</link>
  </item>
  <item>
    <title>nielsborn: Super filmpje op: http://bit.ly/2SLLBh Lijst</title>
    <description>nielsborn: Super filmpje op: http://bit.ly/2SLLBh Lijst</description>
    <pubDate>Wed, 07 Oct 2009 14:49:38 +0000</pubDate>
    <guid>http://twitter.com/nielsborn/statuses/4683644158</guid>
    <link>http://twitter.com/nielsborn/statuses/4683644158</link>
  </item>
  </channel>
</rss>

XML;

$xml = simplexml_load_string($string);

foreach($xml->channel->item as $item)
{
var_dump($item);
}

var_dump($xml);

?>
Sorry maar ik snap niet hoe ik dan de afzonderlijke elementen in mijn output krijg.

De gewenste output is:
<a href="$guid" title="$title" class="tweets"><strong><span>$pubDate</span>'.$title.'</strong></a>'


Kun je me nog iets verder op weg helpen?!

EDIT:

Ik heb het eindelijk voor elkaar. De oplossing:


function get_tweets(){
	// Editable below
	$feed_link = 'http://twitter.com/statuses/user_timeline/39709745.rss';
	$max_items = '5';
	$max_length = '70';
	
	if (function_exists('curl_init')) {
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL, $feed_link);
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');
	
	$ch2 = curl_copy_handle($ch);
	$file_feed = curl_exec($ch2);
	
	curl_close($ch2);
	curl_close($ch);
	} else {
	// curl library is not installed so we better use something else
	}
	
	$xml = simplexml_load_string($file_feed);
	
	$q_items = sizeof($xml->channel->item);
		if($q_items < $max_items){
			$max_items = $q_items;
		}
	
	for ($i = 0; $i < $max_items; $i++){
		$title = $xml->channel->item[$i]->title;
			$title = str_replace('nielsborn: ', '', $title);
			if(strlen($title) > $max_length){
				$title = substr($title, 0, $max_length);
				$title .= '...';
			}
		$description = $xml->channel->item[$i]->description;
			$description = str_replace('nielsborn: ', '', $description);
		$pubDate = $xml->channel->item[$i]->pubDate;
			$pubDate = explode(" ", $pubDate);
			$pubDate[2] = twitter_month($pubDate[2]);
			$date = $pubDate[1].'.'.$pubDate[2].'.'.$pubDate[3];
		$guid = $xml->channel->item[$i]->guid;
		
		echo('<a href="'.$guid.'" title="'.$description.'" target="_blank" class="tweets"><strong><span>'.$date.'</span>'.$title.'</strong></a>');
	}
}


Voor de mensen die me hebben geholpen in deze kwestie: bedankt!

Reageren