Headerinformationen ausblenden
Rainer
- php
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
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";
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
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
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 <http://de.php.net/manual/en/function.strpos.php
und [link:http://de.php.net/manual/en/function.substr.php
oder mit
[link: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
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.
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";