簡體   English   中英

更改 php 中輸出的 MIME 類型

[英]change mime type of output in php

我有一個 php 腳本。 大多數情況下,腳本返回 html,這工作正常,但有一次(參數 ?Format=XML)腳本返回 XML 而不是 HTML。

有什么方法可以將返回的 php 輸出的 mime 類型從 text/html 動態更改為 text/xml 或 application/xml?

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

有關header()的 PHP 文檔中提供了更多信息

設置Content-Type標頭:

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

盡管您可能應該改用“application/xml”。

發送任何輸出之前,您應該發送一個Content-Type標頭。

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

我會回答更新,因為以前的答案很好。
我已經讀到 Internet Explorer 以忽略 Mime 類型標頭(大部分時間?)而依賴於文件的內容(在某些情況下可能會導致問題)而聞名。

嗯,我做了一個簡單的測試:

<?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 將其正確顯示為 XML。 即使我刪除了 xml 聲明。
您應該指出哪個版本有問題。

實際上,正如我上面寫的,使用 IE(至少 6),您甚至不需要內容類型,它可以識別 XML 數據並將其顯示為樹。 你的 XML 正確嗎?

[更新] IE7 也試過,添加 ?format=xml ,仍然可以正確顯示 XML。 如果我發送格式錯誤的 XML,IE 會顯示錯誤。 在 WinXP Pro SP2+ 上測試

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

您也可以在同一行中添加編碼。 我添加了 utf-8,這是最常見的。

我只是使用了以下內容:
注意:我將“i”用於 sql 改進的擴展。

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

遍歷行,為每個打印 XML 節點

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM