MIME-Typ der Ausgabe in PHP ändern
-
02-07-2019 - |
Frage
Ich habe einen PHP-Skript bekommt. Die meiste Zeit das Skript HTML zurückgibt, was in Ordnung funktioniert, aber bei einer Gelegenheit (Parameter? Format = XML) das Skript gibt XML statt HTML.
Gibt es eine Möglichkeit, die zurück MIME-Typen der PHP-Ausgabe on the fly von text / html text / xml oder application / xml zu ändern?
Lösung
header('Content-type: application/xml');
Weitere Informationen finden Sie auf der PHP-Dokumentation für header()
Andere Tipps
Stellen Sie den Content-Type
Header:
header('Content-Type: text/xml');
Auch wenn Sie sollten wahrscheinlich statt "application / xml" verwendet werden.
Sie sollten einen Content-Type
Header vor Bitte senden Sie eine Ausgabe senden.
header('Content-Type: text/xml');
Ich werde das Update beantworten, da die bisherigen Antworten sind gut.
Ich habe gelesen, dass der Internet Explorer auch für das Ignorieren Header Mime-Typ bekannt ist (die meiste Zeit?) Auf den Inhalt der Datei zu setzen (was in einigen Fällen Probleme verursachen kann).
Mmm, ich habe einen einfachen Test:
<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root><foo a="b">Tada</foo></root>';
?>
Internet Explorer 6 zeigt es korrekt als XML. Selbst wenn ich die XML-Deklaration entfernen.
Sie sollten angeben, welche Version problematisch ist.
Tatsächlich, wie ich oben schrieb, mit IE (6 zumindest), brauchen Sie nicht einmal einen Content-Typen, es XML-Daten erkennen und sie als Baum angezeigt werden soll. Ist Ihre XML korrekt?
[Update] Versuchte mit IE7 und fügt hinzu? Format = zu xml, die Anzeige noch XML korrekt. Wenn ich fehlerhafte XML senden, zeigt IE einen Fehler. Getestet auf WinXP Pro SP2 +
header('Content-Type: application/xml; charset=utf-8');
Sie können Codierung als auch in der gleichen Zeile hinzufügen. Ich fügte hinzu, utf-8, das ist am häufigsten.
Ich habe gerade folgenden:
HINWEIS: Ich bin mit „i“ für SQL verbessert Erweiterung.
Start XML file, echo parent node
header("Content-type: text/xml");
echo "<?xml version='1.0' encoding='UTF-8'?>";
echo "<marker>";
Iterate durch die Reihen, Drucken von XML-Knoten für jedes
while ($row = @mysqli_fetch_assoc($results)){
// Add to XML document node
echo '<marker ';
echo 'id="' . $ind . '" ';
echo 'name="' . parseToXML($row['name']) . '" ';
echo 'address="' . parseToXML($row['address']) . '" ';
echo 'lat="' . $row['lat'] . '" ';
echo 'lng="' . $row['lng'] . '" ';
echo 'type="' . $row['type'] . '" ';
echo '/>';
}
// End XML file
echo "</marker>";