So, dann will ich euch(<- vor allem unserm Fachrat) mal den Quelltext zur verfügung stellen:
|
Source code
|
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
38
39
40
41
42
43
44
45
46
47
48
49
|
<?php
/**
* WBBLast24h-2-RSS
* by oixio
*/
header('Content-type: application/xml');
echo '<?xml version="1.0" encoding="ISO-8859-1"?><rss version="2.0">
<channel>
<title>Fachrat Informatik Forum</title>
<link>http://forum.finf.uni-hannover.de/</link>
<description><![CDATA[Fachrat Informatik - Aktive Themen der letzten 24h]]></description>
<lastBuildDate>';
echo date('r');
echo '</lastBuildDate>
<generator>WBBLast24h-2-RSS</generator>' . "\n";
require_once('./HTTPRequest.php');
$r = new HTTPRequest('http://forum.finf.uni-hannover.de/search.php?action=24h');
$rresult = $r->DownloadToString();
if ($r->_error == 302) {
$location = explode ( "&", $r->_headers['location']);
$r = new HTTPRequest ('http://' . $r->_host . '/' . $location[0]);
$rresult = $r->DownloadToString();
}
$regexp = '/<\/span>\n <a href="(.*?)(&sid=.*)?">(.*?)<\/a><\/span>.*(\n.*){4}<br \/>Forum: <b><a href="(.*?)(&sid=.*)?">(.*?)<\/a><\/b>\n.*<\/span><\/td>(\n.*){3}href=".*">(.*?)<\/a>.*(\n.*){5}<span class="smallfont">(.*?)<span class="time">(.*?)<\/span><br \/>\n.*href=".*">(.*?)<\/a>.*\n.*href="(.*?)(&sid=.*)?">/mi';
$success = preg_match_all ( $regexp, $rresult, $regresult );
if ($success === false) {echo "Fehler bei RegExp";}
for ($i = 0; $i < count($regresult[0]); $i++){
$titel = html_entity_decode($regresult[3][$i]);
$link = "http://forum.finf.uni-hannover.de/" . $regresult[14][$i];
$description = "Forum: " . $regresult[7][$i] . " - Letzter Beitrag: " . $regresult[11][$i] . $regresult[12][$i] . "h von " . $regresult[13][$i];
echo "<item>";
echo "<title>$titel</title>";
echo "<link>$link</link>";
echo "<description><![CDATA[$description]]></description>";
echo "</item>\n";
}
?>
</channel></rss>
|
Hinweise:
a) ich hab nichts kommentiert ;-)
b) die HTTPRequest-Class liefer ich nicht mit, die ist bei nur deshalb nötig, da mein Server kein öffnen von URLS unterstützt. Der Teil danach hat den Grund: da der Link
http://forum.finf.uni-hannover.de/search.php?action=24h dann auf eine andere Seite weitergeleitet wird und ich dann einen neuen request für die Seite im Header aufbaue. Das macht die HTTPRequest-Class eigentlich automatisch - nur leider geht da was scheif, weil bei der Weiterleitung eine sid mit angegebn wird, die beim internen 2. Request ne Fehlermeldung erzeugt. So funktioniert es auf jeden Fall.
Das sollte einfacher gehen, wenns aufm gleichen Server ist
c) dann kommt der Reguläre Ausdruck. Hier bin ich für Optimierungsvorschläge dankbar, das ist erstmal so hingeschrieben (aber funktioniert zumindestens
)
d) naja - der Rest sollte klar sein. Die passenden Felder aus dem Array suchen und als RSS verpacken.
e) Ne wirkliche Fehlerbehandlung steckt auch nicht drin.
Ergebnis siehe vorherigen Post
Viel Spaß!
oixio
PS: Wenn jemand was verbessert oder sonstwie verändert würde ich über eine Nachricht freuen. Achja - und wäre schon wenn der Kommentar im Quelltext bleibt.
PPS: Ich selber verpacke das für mich gar nicht mehr in einen Feed. Denn ich wollte das sowieso mit PHP weiterverarbeiten und dann wäre es schwachsinn das zu verpacken und dann wieder zu parsen
EDIT: $regexp angepasst - hatte den Fall nicht beachtet, dass Threads mehrere Seiten haben. Ist gefixt.