Moin,
Und dann bekomme ich irgendein Kauderwelsch, wahrscheinlich kommt der gzip-String, aber ich bekomme den nicht decodiert. Zum einen hjabe ich imemr noch den Header "davorhängen" - wie kann ich den ertmal vom body wegbekommen?
Naja, du bekommst erst mal die Antwort des HTTP-Servers mit den HTTP-Headern ("HTTP/1.0 200 Ok...."), danach eine Leerzeile und die Skriptausgabe. Die Skriptausgabe besteht ihrerseits wieder aus einem ähnlich aufgebauten Header: eine Zeile mit 3 Ziffern und etwas Text dahinter, die den Status angibt (200 ist OK, alles andere ist blöd) und wieder mit einer Leerzeile von der komprimierten Hauptdatei getrennt ist. Diese kannst du dann in PHP mit gzuncompress dekomprimieren.
Der Inhalt ist relativ einfach aufgebaut und enthält keine HTML-Tags oder sowas. Ausserdem braucht man nichts rekursives.
Das sieht ungefähr so aus:
[THREAD id='19152']
[POST id='107727']
answers:0
subject:Klangausgabe des Browsers steuerbar ?
author:Thomas Zinnbauer
cat:SONSTIGES
level:0
time:1028406442
[THREAD id='19150']
[POST id='107713']
answers:6
subject:Validatorfrage
author:Oliver
cat:HTML
level:0
time:1028404450
[POST id='107717']
answers:4
subject:Validatorfrage
author:Götz
cat:HTML
level:1
time:1028404766
[POST id='107726']
answers:0
subject:Validatorfrage
author:Oliver
cat:HTML
...usw. usf....
Die Bedeutung der einzelnen Felder sollte sich intuitiv erschliessen (ja, time ist wirklich ein Unix-Timestamp) und der Aufbau ist ebenfalls einfach. Leider enthält diese Datenstruktur keine Referenzen auf das jeweilige Vaterposting eines Postings, die ich aber brauche, weil ich einfach den Code aus meinem Feature-Artikel genommen und erweitert habe, daher fällt der Skript-Teil der das ausliest bei mir doch etwas komplizierter aus.
Wie man generell eine HTTP-Verbindung aufbaut und den Body von den HTTP-Headern trennt, habe ich im Archiv schon mehrmals gezeigt. Den kleinen Header der Skriptausgabe abzutrennen funktioniert analog.
Aber ich habe auch keien system-aufruf hinbekommen - wie bekomme ich einen String in meinem PHP-Script in die Standardeingabe der Shell? system("gunzip -c"); aber wie gesagt, wie kommen die Daten in die Satndardeingabe der Shell?
popen() ist dein Freund.
--
Henryk Plötz
Grüße aus Berlin
* Help Microsoft combat software piracy: Give Linux to a friend today! *