[英]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.