изменить тип вывода mime в php
-
02-07-2019 - |
Вопрос
У меня есть PHP-скрипт.Большую часть времени сценарий возвращает HTML, который работает нормально, но в одном случае (параметр ?Format=XML) сценарий возвращает XML вместо HTML.
Есть ли способ изменить возвращаемый тип mime вывода php на лету с text/html на text/xml или application/xml?
Решение
header('Content-type: application/xml');
Более подробную информацию можно найти в документации PHP для header()
Другие советы
Установить 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>";