web-dev-qa-db-fra.com

changer le type de sortie mime en php

J'ai un script php. La plupart du temps, le script retourne du HTML, ce qui fonctionne bien, mais à une occasion (paramètre? Format = XML), le script retourne XML au lieu de HTML.

Existe-t-il un moyen de changer le type MIME retourné de la sortie php à la volée de text/html en text/xml ou application/xml?

51
Sam
header('Content-type: application/xml');

Plus d'informations disponibles dans la documentation PHP pour header()

108
nickf

Met le Content-Type entête:

header('Content-Type: text/xml');

Cependant, vous devriez probablement utiliser "application/xml" à la place.

17
John Millikin

Vous devez envoyer un Content-Type header avant vous envoyez n'importe quelle sortie.

header('Content-Type: text/xml');
4
andy.gurin

Je répondrai à la mise à jour, car les réponses précédentes sont bonnes.
J'ai lu qu'Internet Explorer est bien connu pour ignorer les en-têtes de type MIME (la plupart du temps?) Pour se fier au contenu du fichier (ce qui peut causer des problèmes dans certains cas).

Mmm, j'ai fait un test simple:

<?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 l'affiche correctement en XML. Même si je supprime la déclaration xml.
Vous devez indiquer quelle version est problématique.

En fait, comme je l'ai écrit ci-dessus, avec IE (6 au moins), vous n'avez même pas besoin d'un type de contenu, il reconnaît les données XML et les affiche sous forme d'arborescence. Votre XML est-il correct? ?

[Mise à jour] A également essayé avec IE7, en ajoutant? Format = xml, toujours en affichant XML correctement. Si j'envoie du XML mal formé, IE affiche une erreur. Testé sur WinXP Pro SP2 +

3
PhiLho
header('Content-Type: application/xml; charset=utf-8');

Vous pouvez également ajouter de l'encodage sur la même ligne. J'ai ajouté utf-8, qui est le plus courant.

1
Usman Ahmed

Je viens d'utiliser les éléments suivants:
REMARQUE: J'utilise "i" pour l'extension améliorée sql.

Start XML file, echo parent node
header("Content-type: text/xml");
echo "<?xml version='1.0' encoding='UTF-8'?>";
echo "<marker>";

Itérer à travers les lignes, en imprimant des nœuds XML pour chacun

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>";
0
Thomas