在PHP中改变MIMEtypes的输出

我有一个PHP脚本。 大多数情况下脚本会返回html,这个工作正常,但有一次(参数?Format = XML)脚本返回XML而不是HTML。

有没有什么办法来改变返回的MIMEtypes的PHP输出dynamic从文本/ HTML到文本/ XML或应用程序/ XML?

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

header()的PHP文档中提供了更多信息。

设置Content-Type标题:

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

尽pipe你应该使用“application / xml”来代替。

我会回答更新,因为以前的答案是好的。
我已经读过Internet Explorer因忽略MIMEtypes标题(大部分时间?)而闻名于依赖文件的内容(在某些情况下可能导致问题)。

嗯,我做了一个简单的testing:

 <?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(至less6),你甚至不需要内容types,它识别XML数据,并显示为一个树。 你的XML是否正确?

[更新]也尝试了IE7,也join?format = xml,仍然正确地显示XML。 如果我发送格式不正确的XML,则IE显示错误。 在WinXP Pro SP2 +上testing

发送任何输出之前,您应该发送Content-Type标头。

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

我只是使用了以下内容:
注:我正在使用“我”为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>";