[PHP] Quote via RSS

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • jaspara
  • Registratie: April 2008
  • Laatst online: 11-09 15:43
Hoi tweakers!

Ik zit met een probleem, ik wil een qoute van http://feeds.feedburner.com/brainyquote/QUOTEBR op mijn wordpress blog zetten onder de titel.

Als ik met dit php script:
code:
1
2
3
4
5
6
7
8
9
<?php
    $xml = simplexml_load_file('http://feeds.feedburner.com/brainyquote/QUOTEBR');

    foreach($xml->channel->item as $item)
    { 
        echo $item->title . '<br />';
        echo $item->description . '<br /> <br />';
    }
?>

dat probeer verdwijnt de tekst...


nu heb ik dat geprobeerd via javascript (wat wel werkt)
code:
1
<script type="text/javascript" src="http://www.brainyquote.com/link/quotebr.js"></script>

maar dit vind ik niks, want er staat allemaal gedoe als

Quote of the day enz. ik wil eigenlijk alleen de quote...

zie mijn blog

Weet iemand wat ik fout doe in de php-code?

Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
http://feeds.feedburner.com/brainyquote/QUOTEBR is natuurlijk geen RSS feed maar een gewone pagina.

Je zal eerst de echte RSS feed moeten vinden.


Sorry niet goed gekeken. Het is wel een XML pagina.

[ Voor 17% gewijzigd door Megamind op 22-05-2009 13:35 ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Kun je niet zelf wat debuggen? De feed lijkt me wel valide, dus dan moet het in jouw code zitten. Wat verdwijnt er precies? Wat als je de content van de xml gewoon print?

Acties:
  • 0 Henk 'm!

  • jaspara
  • Registratie: April 2008
  • Laatst online: 11-09 15:43
OK, ik dacht al... zoeken binnen een rss feed...

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
Jouw scriptje werkt bij mij prima. Ik denk dat je beter moet debuggen. Gaat het inlezen van die XMLwel goed?

Acties:
  • 0 Henk 'm!

  • jaspara
  • Registratie: April 2008
  • Laatst online: 11-09 15:43
Hij laat niks zien als ik het scriptje los probeer: zie http://jaspara.freehostia.com/test/test.php

code:
1
2
3
4
5
6
7
8
9
10
11
</html>
<?php
    $xml = simplexml_load_file('http://feeds.feedburner.com/brainyquote/QUOTEBR');

    foreach($xml->channel->item as $item)
    { 
        echo $item->title . '<br />';
        echo $item->description . '<br /> <br />';
    }
?>
</html>


@noork:

Er verdwijnt in principe niks, alleen laat hij niks zien, en doet hij dit wel bij javascript....

[ Voor 14% gewijzigd door jaspara op 22-05-2009 13:50 ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Prop gewoon eens wat 'echo "test"' stukjes tussen de code en kijk waar hij vastloopt. Test ook b.v. even print_r $xml nadat je deze feed hebt ingelezen in $xml. Zet ook eens error reporting aan. Heb je uberhaupt wel de beschikking over SimpleXML? Kijk eens in de php_info() hiervoor.

Overigens zou ik voor de compleetheid ook even body tags toevoegen. Kun je daar in elk geval niet meer over vallen.

[ Voor 10% gewijzigd door Noork op 22-05-2009 14:16 ]


Acties:
  • 0 Henk 'm!

  • jaspara
  • Registratie: April 2008
  • Laatst online: 11-09 15:43
Noork schreef op vrijdag 22 mei 2009 @ 14:14:
Prop gewoon eens wat 'echo "test"' stukjes tussen de code en kijk waar hij vastloopt. Test ook b.v. even print_r $xml nadat je deze feed hebt ingelezen in $xml. Zet ook eens error reporting aan. Heb je uberhaupt wel de beschikking over SimpleXML? Kijk eens in de php_info() hiervoor.

Overigens zou ik voor de compleetheid ook even body tags toevoegen. Kun je daar in elk geval niet meer over vallen.
Ik heb even wat geprobeert met behulp van php.net

zie deze code

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<html>
<body>
<?php if (file_exists('http://tweakers.net/feeds/mixed.xml')) {
    $xml = simplexml_load_file('http://tweakers.net/feeds/mixed.xml');
 
    print_r($xml);
} else {
    exit('Failed to open');
}
?>
</body>

</html>


maar dan print hij Failed to open
Simplexml support enabled
Revision $Revision: 1.151.2.22.2.39 $
Schema support enabled

[ Voor 8% gewijzigd door jaspara op 22-05-2009 14:44 ]


Acties:
  • 0 Henk 'm!

  • Counter-Strike
  • Registratie: Maart 2000
  • Niet online

Counter-Strike

Maar ik speel het niet!

API entry voor file_exists():
As of PHP 5.0.0, this function can also be used with some URL wrappers. Refer to List of Supported Protocols/Wrappers for a listing of which wrappers support stat() family of functionality.
Via de List of Supported Protocols/Wrappers kom je uit bij de http/https wrapper en je ziet:
Supports stat(): No
Nogal logisch dat file_exists() je URI niet kan openen dus ;-)

Succes

[ Voor 4% gewijzigd door Counter-Strike op 22-05-2009 14:53 ]

Dit is het einde van deze mededeling. De mogelijkheid tot reageren is aanwezig!


Acties:
  • 0 Henk 'm!

  • jaspara
  • Registratie: April 2008
  • Laatst online: 11-09 15:43
Counter-Strike schreef op vrijdag 22 mei 2009 @ 14:51:
API entry voor file_exists():

[...]
je bedoelt dus dat het bij file_exists() de fout ingaat?

dan zou
code:
1
2
3
 $xml = simplexml_load_file('http://tweakers.net/feeds/mixed.xml');
 
    print_r($xml);
voldoende zijn?

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Bovenstaande code werkt hier gewoon correct. Werkt het wel b.v. op je eigen testserver? (mocht je die hebben uiteraard). Het kan misschien zijn dat je geen externe data mag ophalen...

Kun je wel een lokaal xml-bestand parsen met SimpleXML?

Je zou ook even op deze manier kunnen testen:
code:
1
2
3
4
$url = "http://blabla.com/xml.xml";
//echo $url;
$xml = file_get_contents($url);
print_r($xml);

[ Voor 25% gewijzigd door Noork op 22-05-2009 15:09 ]


Acties:
  • 0 Henk 'm!

  • jaspara
  • Registratie: April 2008
  • Laatst online: 11-09 15:43
@Noork

Ik heb deze code geprobeerd

code:
1
2
3
4
5
6
<?php
$url = "http://tweakers.net/feeds/mixed.xml";
//echo $url;
$xml = file_get_contents($url);
print_r($xml);
?>


Maar hij laat niks zien.


Lokaal werkt het wel ik heb een xml bestand aangemaakt, die hij netjes laat zien...

Ik ben beng dat ik geen externe data mag ophalen...

Dan maar weer een eigen virtuele server maken...

Zijn er ook manieren om dit te omzeilen??? :)

[ Voor 5% gewijzigd door jaspara op 22-05-2009 16:23 ]


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Bel/mail je provider en leg ze dit voor?

Acties:
  • 0 Henk 'm!

  • mocean
  • Registratie: November 2000
  • Laatst online: 04-09 10:34
jaspara schreef op vrijdag 22 mei 2009 @ 16:20:
@Noork

Ik heb deze code geprobeerd

code:
1
2
3
4
5
6
<?php
$url = "http://tweakers.net/feeds/mixed.xml";
//echo $url;
$xml = file_get_contents($url);
print_r($xml);
?>


Maar hij laat niks zien.


Lokaal werkt het wel ik heb een xml bestand aangemaakt, die hij netjes laat zien...

Ik ben beng dat ik geen externe data mag ophalen...

Dan maar weer een eigen virtuele server maken...

Zijn er ook manieren om dit te omzeilen??? :)
Print_r is voor arrays, die $xml bevat sowieso geen array.

Goede kans dat je vanwege de settings geen externe files mag ophalen!

Koop of verkoop je webshop: ecquisition.com


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
mocean schreef op vrijdag 22 mei 2009 @ 17:30:
[...]
Print_r is voor arrays, die $xml bevat sowieso geen array.
Dat is niet waar. Zie gewoon de print_r documentatie: http://www.php.net/print_r print_r werkt ook met o.a. strings. En file_get_contents schrijft weg naar een string. Het werkt hier prima.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

zoiets bedoel je?

http://meuk.matis-digital.com/tracker/tweakers.php

Heb het met zend framework gemaakt. Gebruik het ook voor mn signature ;)

Mocht je er niet uit komen dan wil ik nog wel wat bron code posten!

[ Voor 22% gewijzigd door Matis op 22-05-2009 21:12 ]

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
toaomatis schreef op vrijdag 22 mei 2009 @ 21:09:
zoiets bedoel je?
...
Mocht je er niet uit komen dan wil ik nog wel wat bron code posten!
Gaat er niet om dat de TS niet weet hoe het moet. Bovenstaande scripts werken immers al prima, alleen niet op de site/server van de TS.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

Noork schreef op vrijdag 22 mei 2009 @ 21:26:
[...]

Gaat er niet om dat de TS niet weet hoe het moet. Bovenstaande scripts werken immers al prima, alleen niet op de site/server van de TS.
Klopt, ik las dat pas ergens halverwege echt duidelijk. Ik dacht van de TS te begrijpen dat zijn rss tracker de feed leeg las ofzo :P

Anyway, mocht hij het op een andere manier willen proberen:

PHP:
1
2
3
4
5
6
require('Zend/Feed/Rss.php');
$channel = new Zend_Feed_Rss('http://feeds.feedburner.com/brainyquote/QUOTEBR');
foreach ($channel as $item)
{
    printf('%s<br>',  $item->description());
}

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 20-09 17:02
Noork schreef op vrijdag 22 mei 2009 @ 21:26:
[...]

Gaat er niet om dat de TS niet weet hoe het moet. Bovenstaande scripts werken immers al prima, alleen niet op de site/server van de TS.
Ik ken Zend niet heel goed omdat ik er zelf geen gebruik van maak, maar ik vermoed dat dit toch wel het e.a. kan oplossen. De TS denkt dat hij geen bevoegheid heeft om met file_get_contents een url te laden. Dat klinkt erg plausibel. Normaal zou de oplossing zijn om CURL of sockets uit te proberen. Het grote voordeel van Zend is dat die het uitproberen van CURL of sockets van je over kan nemen.

Misschien kan iemand bevestigen dat dit ook inderdaad gebeurt.

@hierboven: print_r is inderdaad niet bedoelt voor strings, maar wanneer je het een string als input geeft komt er over het algemeen toch wel output.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

doeternietoe schreef op zaterdag 23 mei 2009 @ 00:38:
Ik ken Zend niet heel goed omdat ik er zelf geen gebruik van maak, maar ik vermoed dat dit toch wel het e.a. kan oplossen. De TS denkt dat hij geen bevoegheid heeft om met file_get_contents een url te laden. Dat klinkt erg plausibel. Normaal zou de oplossing zijn om CURL of sockets uit te proberen. Het grote voordeel van Zend is dat die het uitproberen van CURL of sockets van je over kan nemen.
Klopt, dit is geen file getter, maar een stream reader via een socket.
@hierboven: print_r is inderdaad niet bedoelt voor strings, maar wanneer je het een string als input geeft komt er over het algemeen toch wel output.
PHP:
1
2
3
<?
print_r("lalalala"); // presenteert gewoon de string lalalala ;)
?>

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • jaspara
  • Registratie: April 2008
  • Laatst online: 11-09 15:43
Dank jullie wel!

Ik heb een tijdje niet gekeken, en ga nu jullie suggesties uitproberen...

Nogmaals bedankt!

@toaomatis

code:
1
2
3
4
5
6
7
8
<?php
require('Zend/Feed/Rss.php');
$channel = new Zend_Feed_Rss('http://feeds.feedburner.com/brainyquote/QUOTEBR');
foreach ($channel as $item)
{
    printf('%s<br>',  $item->description());
}
?>
werkt niet.
Werkt http://meuk.matis-digital.com/tracker/tweakers.php op dezelfde manier?

[ Voor 58% gewijzigd door jaspara op 24-05-2009 13:07 ]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

Yup, heb je wel het Zend Framework Feed erbij zitten?

Indien nee:

Kun je hier downloaden: http://framework.zend.com/download/latest

Je hebt eik maar 1 bestandje nodig: "Zend/Feed/Rss.php" Die moet je includen ;)

Indien ja:

Bad luck, bel je hosting/provider met jouw probleem en vraag of dat ze het blokkeren.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Ah, 'werkt niet'. Als je niet beter leert te debuggen of te communiceren wat er precies wel en niet werkt, kan je eerlijk gezegd beter hier zelf mee stoppen en het iemand anders laten doen.

{signature}


Acties:
  • 0 Henk 'm!

  • jaspara
  • Registratie: April 2008
  • Laatst online: 11-09 15:43
Bedankt voor jullie hulp, helaas print het script nog steeds niks ook met het Zend framework. :(

Waarschijnlijk komt het omdat mijn host gratis is... Ik denk dat ik dit probleem beter kan oplossen door bijvoorbeeld een eigen webserver te maken en wat nu mijn host is te laten redirecten naar mijn thuis ip...

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Of je geeft een paar tientjes per jaar uit en dan ben je dr ook ;)

Acties:
  • 0 Henk 'm!

  • ID-College
  • Registratie: November 2003
  • Laatst online: 15:55
Ik betaal 20 euro per jaar en alles werkt altijd :)
Kost nix, en de tijd die je nu kwijt bent is duurder dan die 2 tientjes. Gratis hosts zijn imo altijd flut ...

[ Voor 52% gewijzigd door ID-College op 24-05-2009 15:29 ]


Acties:
  • 0 Henk 'm!

  • jaspara
  • Registratie: April 2008
  • Laatst online: 11-09 15:43
Daar zit wat in.

offtopic:
weke host heb je dan?

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

Ikzelf heb Sohosted pakket 1 gaat al voor 1,50 euro per maand (excl) over de toonbank. Daar komt nog eventuele domeinregistraties bij.

Bij Sohosted draaien ze op Windows Server 2k3 en ik heb er goede ervaringen mee!

If money talks then I'm a mime
If time is money then I'm out of time

Pagina: 1