Feed check, kijken of het een xml/rss is
Ik heb een input gemaakt waar je een feed kan invoeren, met behulp van jQuery controleer ik met een php bestand of de feed al in de database bestaat ja of nee, dat werkt, maar nu wil ik kijken of het wel om een werkelijke feed gaat.
Feeds die ik test:
- http://rss.politie.nl/rss/ab/gemeenten/overijssel/hengelo.xml (uitkomst: leeg, dus deze komt al niet verder dat file_get_contents)
- http://projects.knmi.nl/RSSread/rss_KNMIpersberichten.php (uitkomst: Fout, deze pakt de title niet in de feed)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?php
else if(isset($_GET['realfeed']))
{
if(empty(trim(@file_get_contents($_GET['realfeed']))))
{
echo 'leeg';
}
else
{
$Xml = @simplexml_load_file($_GET['realfeed']);
if($Xml === false)
{
echo 'nee';
}
else
{
//echo 'ja';
// Hier inhoud checken: item, title, pubDate ect..
//foreach($Xml->item as $item)
//{
$titel = $Xml->$title;
if(!empty($titel))
{
echo 'ja';
echo '<br />'.$titel;
}
else {
echo 'geen'; // geen title gevonden.
echo '<br />'.$titel;
}
//}
}
}
}
?>
else if(isset($_GET['realfeed']))
{
if(empty(trim(@file_get_contents($_GET['realfeed']))))
{
echo 'leeg';
}
else
{
$Xml = @simplexml_load_file($_GET['realfeed']);
if($Xml === false)
{
echo 'nee';
}
else
{
//echo 'ja';
// Hier inhoud checken: item, title, pubDate ect..
//foreach($Xml->item as $item)
//{
$titel = $Xml->$title;
if(!empty($titel))
{
echo 'ja';
echo '<br />'.$titel;
}
else {
echo 'geen'; // geen title gevonden.
echo '<br />'.$titel;
}
//}
}
}
}
?>
Feeds die ik test:
- http://rss.politie.nl/rss/ab/gemeenten/overijssel/hengelo.xml (uitkomst: leeg, dus deze komt al niet verder dat file_get_contents)
- http://projects.knmi.nl/RSSread/rss_KNMIpersberichten.php (uitkomst: Fout, deze pakt de title niet in de feed)
Heb hier iets aan:
http://php.net/manual/en/domdocument.validate.php
http://php.net/manual/en/domdocument.validate.php
hengelo.xml toont wel degelijk inhoud.
en waarom je die knmi feed wilt afkeuren, is me ook niet duidelijk. Er staan wel title's in. Zowel voor de feed zelf, als voor de berichten in de feed.
en waarom je die knmi feed wilt afkeuren, is me ook niet duidelijk. Er staan wel title's in. Zowel voor de feed zelf, als voor de berichten in de feed.
@Ivo P, Niet elke feed is het zelfde, de meeste nieuws feeds hebben een title, discription, pubDate en link. Daar wil ik dan juist op gaan controleren.
Als ik $Xml->$item->$title op wil halen krijg ik een foutmelding dat $item niet bestaat. met $Xml->$title krijg ik geen foutmelding maar dan is er geen waarde.
Edit:
Ik ben er al achter wat ik fout deed bij het ophalen van de titel, dit moet het natuurlijk zijn zonder de $. $titel = $Xml->channel->item->title;
Als ik $Xml->$item->$title op wil halen krijg ik een foutmelding dat $item niet bestaat. met $Xml->$title krijg ik geen foutmelding maar dan is er geen waarde.
Edit:
Ik ben er al achter wat ik fout deed bij het ophalen van de titel, dit moet het natuurlijk zijn zonder de $. $titel = $Xml->channel->item->title;
Gewijzigd op 21/10/2015 16:19:57 door Ferdi R
Ik kan je wel zeggen dat de Content-Type van het xml bestand verkeerd is, en word daarom niet als een xml bestand weergeven.
Probeer het uit te lezen als RSS, zoals je al deed. Als dat niet lukt, was het blijkbaar geen RSS.
Vaak zijn character encoderingen een ramp in RSS (komen niet overeen met wat ze claimen te zijn).
Daarnaast, gebruik cURL in plaats van file_get_contents(). Het komt geregeld voor dat je een of meer keer wordt geredirect voordat het uiteindelijke RSS-bestand geserveerd wordt.
Vaak zijn character encoderingen een ramp in RSS (komen niet overeen met wat ze claimen te zijn).
Daarnaast, gebruik cURL in plaats van file_get_contents(). Het komt geregeld voor dat je een of meer keer wordt geredirect voordat het uiteindelijke RSS-bestand geserveerd wordt.




