Avatar billede w13 Novice
07. november 2014 - 10:07 Der er 15 kommentarer og
1 løsning

Kan ikke hente RSS-feed med PHP

Hej Eksperter

Jeg har flyttet en kundes PHP-website fra mit eget testmiljø og over på deres egen server.

Jeg forsøger med en PHP-kode at hente feedet fra en blog, men på deres egen server virker det ikke, og jeg får i stedet bare et tomt object?

$xml = ('http://blogname.com/feed/');

$xmlDoc = new DOMDocument();
$xmlDoc->load($xml);

echo '<pre>xmlDoc: ' . print_r($xmlDoc, true) . '</pre>';

xmlDoc indeholder en liste af blogindlæggene, når jeg kører dette på min egen server.

Kundens serverudbyder siger, at "the DOM is active in our servers".
Hvad kan der være galt, og hvad kan jeg gøre for at få det til at virke igen?

Her er deres PHP-info: http://tuka.se/phpinfo/
Her er vores PHP-info: http://wearewonder.dk/phpinfo.php

På forhånd tak!

Med venlig hilsen
Tobias
Avatar billede repox Seniormester
07. november 2014 - 10:12 #1
URL til det faktiske feed?
Avatar billede w13 Novice
07. november 2014 - 10:26 #2
Repox: Så lad gå. :o) http://frooshblog.com/feed
Virker som sagt på egen server (Meebox), men ikke hos Telia.se's webhotel.
Avatar billede repox Seniormester
07. november 2014 - 10:34 #3
Begge hoteller understøtter SimpleXML.

Prøv med dette:

<?php

$xml = new SimpleXMLElement(file_get_contents('http://frooshblog.com/feed/'));
var_dump($xml);
Avatar billede w13 Novice
07. november 2014 - 11:49 #4
Jeg får en:

Warning: file_get_contents() [function.file-get-contents]: http:// wrapper is disabled in the server configuration by allow_url_fopen=0

Warning: file_get_contents(http://frooshblog.com/feed/) [function.file-get-contents]: failed to open stream: no suitable wrapper could be found
Avatar billede erikjacobsen Ekspert
07. november 2014 - 21:19 #5
Avatar billede w13 Novice
10. november 2014 - 10:32 #6
Tak for hjælpen.

Nu får jeg noget returneret, men det ser sådan her ud:

object(SimpleXMLElement)#1 (2) { ["@attributes"]=> array(1) { ["version"]=> string(3) "2.0" } ["channel"]=> object(SimpleXMLElement)#2 (9) { ["title"]=> string(10) "frooshblog" ["link"]=> string(21) "http://frooshblog.com" ["description"]=> string(34) "Trading with the developing world!" ["lastBuildDate"]=> string(31) "Thu, 06 Nov 2014 09:58:38 +0000" ["language"]=> string(2) "en" ["generator"]=> string(21) "http://wordpress.com/" ["cloud"]=> object(SimpleXMLElement)#3 (1) { ["@attributes"]=> array(5) { ["domain"]=> string(14) "frooshblog.com" ["port"]=> string(2) "80" ["path"]=> string(17) "/?rsscloud=notify" ["registerProcedure"]=> string(0) "" ["protocol"]=> string(9) "http-post" } } ["image"]=> object(SimpleXMLElement)#4 (3) { ["url"]=> string(34) "http://s2.wp.com/i/buttonw-com.png" ["title"]=> string(10) "frooshblog" ["link"]=> string(21) "http://frooshblog.com" } ["item"]=> object(SimpleXMLElement)#5 (7) { ["title"]=> string(22) "Welcome to our blog:)!" ["link"]=> string(53) "http://frooshblog.com/2014/11/06/welcome-to-our-blog/" ["comments"]=> string(62) "http://frooshblog.com/2014/11/06/welcome-to-our-blog/#comments" ["pubDate"]=> string(31) "Thu, 06 Nov 2014 09:58:05 +0000" ["category"]=> object(SimpleXMLElement)#6 (0) { } ["guid"]=> string(26) "http://frooshblog.com/?p=7" ["description"]=> object(SimpleXMLElement)#7 (0) { } } } }

Der mangler helt fx "description" og "content", som indeholder teksten fra blogindlægget. Disse to plejede at komme ud sådan her:

<description><![CDATA[Hello and a big welcome to our new blog:)! We are very exited to start up our new blog with updates from our fruit farm program! Not only do we visit our partners in the developing world by working on their fruit farms, we also speak loudly about the amazing impact we see the fruit [&#8230;]<img alt="" border="0" src="http://pixel.wp.com/b.gif?host=frooshblog.com&#038;blog=75895042&#038;post=7&#038;subd=frooshblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
<content:encoded><![CDATA[<p>Hello and a big welcome to our new blog:)!</p>
<p>We are very exited to start up our new blog with updates from our fruit farm program! Not only do we visit our partners in the developing world by working on their fruit farms, we also speak loudly about the amazing impact we see the fruit farms have on development in poor and rural areas of the worlds poorest countries. We will with this blog tell the stories on behalf of our friends on the fruit farms, as well as giving insights and perspectives on corporate social responsibilty as we see it and value it in froosh. We hope you will find our stories interesting, and input/comments are very welcome always!</p>
<p>As a little appetizer here is a youtube interview with us, regarding our perspectives on private businnes opportunities in Africa &#8211; from the leading fair in the food and beverage industry SIAL in Paris a few weeks ago,</p>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='474' height='297' src='http://www.youtube.com/embed/_AjwaSo2UZU?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0' allowfullscreen='true'></iframe></span></p><br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/frooshblog.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/frooshblog.wordpress.com/7/" /></a> <img alt="" border="0" src="http://pixel.wp.com/b.gif?host=frooshblog.com&#038;blog=75895042&#038;post=7&#038;subd=frooshblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>

Hvordan får jeg description og content med, når jeg bruger cUrl?
Avatar billede w13 Novice
10. november 2014 - 12:24 #7
Har nu fået slået funktionen til på serveren, så jeg kan bruge file_get_contents(), men med samme resultat.
Avatar billede erikjacobsen Ekspert
10. november 2014 - 13:17 #8
Avatar billede w13 Novice
16. november 2014 - 15:39 #9
erikjacobsen>> Fedt, tak! Men kræver det ikke, at man har strengen:
'<content><![CDATA[Hello, world!]]></content>'
?

Lige nu kan jeg slet ikke få denne streng ud, da content ikke er med i resultatet.
Avatar billede erikjacobsen Ekspert
16. november 2014 - 21:41 #10
Hvis du kigger i den rå XML står content med CDATA (som jeg husker det fra forleden). Den ekstra parameter der står omtalt vil så kunne få teksten med.
Avatar billede w13 Novice
17. november 2014 - 13:48 #11
erikjacobsen>> Lige nu gør jeg dette:

---
$xmlstring = file_get_contents('http://frooshblog.com/feed/');

$xml      = new SimpleXMLElement($xmlstring);
$xml      = simplexml_load_string($xmlstring, 'SimpleXMLElement', LIBXML_NOCDATA);
$item      = $xml->channel->item;
---

$xmlstring indeholder fint det hele - også Content!

Men $xml og $item indeholder ingen Content... Er det ikke for underligt, at Content forsvinder hver gang??
Avatar billede erikjacobsen Ekspert
17. november 2014 - 15:42 #12
Den skriver fint CDATA elementer ud nu, men når der angives et namespace, som i <dc:creator>, så skal du explicit be' om det namespace - ellers kommer de ikke med.
Avatar billede w13 Novice
17. november 2014 - 16:11 #13
erikjacobsen>> For pokker da osse... :)

Er det noget fikumdik, der skal ske i simplexml_load_string() ?
Avatar billede erikjacobsen Ekspert
17. november 2014 - 16:40 #14
Prøv at læse lidt her: http://www.sitepoint.com/parsing-xml-with-simplexml/
(Dealing with Namespaces)
Avatar billede w13 Novice
17. november 2014 - 18:02 #15
Tak, så lykkedes det! :)

repox>> Vil du have pointene som tak for din tid? Erik takker sædvanligvis nej. :o)
Avatar billede w13 Novice
14. april 2015 - 12:31 #16
Lukker. Sig til, hvis nogen vil have point! Tak for hjælpen. :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester