Einzelnen Beitrag anzeigen

Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#16

Re: [PHP] print_r ($abc)

  Alt 10. Jan 2010, 13:23
Zitat von Valle:
Das ist falsch. PHP sendet automatisch einen HTTP-Header "Content-Type" mit dem Inhalt "text/html" an den Browser. Daran erkennt der Browser, dass es sich um HTML handelt. Am Doctype erkennt er nur, was für'n HTML du da sendest.
Beides ist falsch

Rein theoretisch gibt der Content-Type an, welchen Content (ob Bild, Text, Word-Dokument, etc.) der Browser da geliefert bekommt. Da dies aber nicht immer korrekt gemacht wird (z.B. senden viele Download-Scripte keinen Mime-Type voraus) raten die Browser da gerne mal.

Kleiner Test: rufe ein PHP-Script mit folgendem Code in Firefox und Internet Explorer auf:
Code:
<?php

header('text/plain');

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<head>
<title>Test</title>
</head>
<body>
[b]Test[/b]
</body>
</html>
Was ist das erwartete Verhalten? Der Browser zeigt den HTML-Code direkt an. Wenn ich es richtig in Erinnerung hab (hab grad keine Zeit zu testen) zeigt der IE in dem Fall nicht den HTML-Code an sondern interpretiert das HTML, weil er sieht, dass da HTML geliefert wurde - und das obwohl text/plain als Content-Type geschickt wurde. Das entsprechende Stichwort heisst "Content-Type Sniffing".

@Albert: in Tutorials und Buechern vergisst man oft so Kleinigkeiten, die man automatisch macht - wie z.B. die von Daniel erwaehnte Verwendung von <pre>.

@Daniel: dein Code ist eigentlich nicht ganz korrekt. print_r() mit einem Parameter gibt void zurueck - also nada. Nur wenn du als zweiten Parameter true uebergibst, gibt die Funktion die Ausgabe nicht direkt aufm Output-Buffer aus sondern gibt ihn zurueck:
Code:
echo '<pre>', print_r($abc, true), '</pre>';
Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat