![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Rainer, 30. 12. 2007, 22:56
Hallo,
ich habe folgenden Code um eine Website über ein PHP einzulesen und dann auszugeben. Funktioniert so weit ganz gut, jedoch wird immer so etwas mit ausgegeben:HTTP/1.1 200 OK Date: Sun, 30 Dec 2007 21:52:31 GMT Server: Apache Last-Modified: Sun, 30 Dec 2007 21:00:05 GMT ETag: "14546-363f9f40" Accept-Ranges: bytes Content-Length: 83270 Connection: close Content-Type: text/html
wie werde ich das los?<?php
if (!isset($_GET['site'])) {
$fp = fsockopen ("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
}
else {
fputs($fp, "GET / HTTP/1.0\r\n\r\n");
while (!feof($fp)) {
echo fgets($fp,128);
}
fclose($fp);
}
}
?>
Gruß
Rainer
Die folgende Nachricht zum Thema stammt von: dedlfix, 30. 12. 2007, 23:01
echo $begrüßung;
»» ich habe folgenden Code um eine Website über ein PHP einzulesen und dann auszugeben. Funktioniert so weit ganz gut, jedoch wird immer so etwas mit ausgegeben:
»» [ code lang=html]
Das ist kein HTML sondern ein HTTP-Header.
»» HTTP/1.1 200 OK Date: Sun, 30 Dec 2007 21:52:31 GMT Server: Apache Last-Modified: Sun, 30 Dec 2007 21:00:05 GMT ETag: "14546-363f9f40" Accept-Ranges: bytes Content-Length: 83270 Connection: close Content-Type: text/html
Der hört per Definition nach dem ersten zu findenden \r\n\r\n auf. Wenn der Webserver nicht richtig programmiert ist, könnte der auch nur \n\n senden.
echo "$verabschiedung $name";
Die folgende Nachricht zum Thema stammt von: ChrisB, 30. 12. 2007, 23:04
Hi,
»» ich habe folgenden Code um eine Website über ein PHP einzulesen und dann auszugeben. Funktioniert so weit ganz gut, jedoch wird immer so etwas mit ausgegeben:
»»
»» HTTP/1.1 200 OK Date: Sun, 30 Dec 2007 21:52:31 GMT Server: Apache Last-Modified: Sun, 30 Dec 2007 21:00:05 GMT ETag: "14546-363f9f40" Accept-Ranges: bytes Content-Length: 83270 Connection: close Content-Type: text/html
»»
»» wie werde ich das los?
Indem du es abschneidest ...
Erst mal alles in eine Stringvariable einlesen - und dann nach dem ersten Auftauchen eines doppelten Zeilenumbruchs (\r\n\r\n) auftrennen, der bekanntlich HTTP Header von HTTP Body trennt.
MfG ChrisB
Die folgende Nachricht zum Thema stammt von: Rainer, 30. 12. 2007, 23:10
Hi,
»» Erst mal alles in eine Stringvariable einlesen - und dann nach dem ersten Auftauchen eines doppelten Zeilenumbruchs (\r\n\r\n) auftrennen, der bekanntlich HTTP Header von HTTP Body trennt.
und mit was und wie?
Gruß
Rainer
Die folgende Nachricht zum Thema stammt von: Tom, 30. 12. 2007, 23:22
Hello,
»» »» Erst mal alles in eine Stringvariable einlesen - und dann nach dem ersten Auftauchen eines doppelten Zeilenumbruchs (\r\n\r\n) auftrennen, der bekanntlich HTTP Header von HTTP Body trennt.
»»
»» und mit was und wie?
Wie wäre es mit einer Stringfunktion?
Stelle suchen, merken und daran auftrennen.
mit [link:http://de.php.net/manual/en/function.strpos.php
und [link:http://de.php.net/manual/en/function.substr.php
oder mit
http://de.php.net/manual/en/function.strstr.php
oder mit einer Array-Funktion
http://de.php.net/manual/en/function.substr.php
oder mit einer Regular Expression
http://de.php.net/manual/en/function.preg-split.php
Mehr fällt mir im Moment leider nicht ein.
Harzliche Grüße aus
Sankt Andreasberg
und Guten Rutsch
Tom
--
Nur selber lernen macht schlau
Die folgende Nachricht zum Thema stammt von: Dennis, 30. 12. 2007, 23:23
Hi Rainer,
»» und mit was und wie?
Zum Beispiel mit explode(), dann wirst du ein Array mit mehreren Elementen bekommen, das erste enthält die Header, alle weiteren sind Teile des Bodys. Du kannst mit unset() das erste Array-Element löschen und die restlichen Elemente wieder mit implode() zusammenfügen.
Eleganter wäre es allerdings, wenn du mit strpos() die Position des ersten Auftretens von "\r\n\r\n" im String ermittelst und dann mit substr() den entsprechenden Teil vom String wegschneidest.
Viele Grüße,
~ Dennis.
--
Mein SelfCode: ie:{ fl:( br:> va:) ls:[ fo:) rl:( n4:# ss:) de:] js:| ch:{ sh:| mo:} zu:|
Die folgende Nachricht zum Thema stammt von: dedlfix, 30. 12. 2007, 23:54
echo $begrüßung;
»» Zum Beispiel mit explode(), dann wirst du ein Array mit mehreren Elementen bekommen,
explode() kennt einen dritten Parameter, der angibt, wieviele Bruchstücke man haben möchte. (Ist übrigens auf der von dir verlinkten Handbuchseite erwähnt.) Zusammen mit list() lässt sich der zweite Teil recht elegant in eine Variable bringen:
list(, $httpBody) = explode("\r\n\r\n", $httpResponse, 2);
Wenn man die HTTP-Header noch benötigt, kann man dem list() noch eine weitere Variable als ersten Parameter mitgeben.
echo "$verabschiedung $name";
© 1998-2006
Impressum, Software: Classic Forum