programing

php에서 출력의 mime 유형 변경

muds 2023. 7. 30. 18:10
반응형

php에서 출력의 mime 유형 변경

저는 php 스크립트를 가지고 있습니다.대부분의 경우 스크립트는 정상적으로 작동하는 html을 반환하지만 한 번은 (파라미터?형식=XML) 스크립트가 HTML 대신 XML을 반환합니다.

fly에서 php 출력의 반환된 mime 유형을 text/html에서 text/xml 또는 application/xml로 변경할 수 있는 방법이 있습니까?

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

자세한 내용은 PHP 설명서에서 확인할 수 있습니다.

설정Content-Type머리글:

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

대신 "application/xml"을 사용해야 합니다.

다음을 전송해야 합니다.Content-Type출력을 전송하기 에 헤더를 입력합니다.

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

동일한 행에 인코딩을 추가할 수도 있습니다.저는 가장 일반적인 utf-8을 추가했습니다.

이전 답변이 좋으니 업데이트에 답변 드리겠습니다.
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이 정확합니까?

[Update] IE7에서도 시도해보고, ?format=xml도 추가했지만 XML은 여전히 올바르게 표시됩니다.잘못된 형식의 XML을 보내면 IE에 오류가 표시됩니다.WinXP Pro SP2+에서 테스트됨

다음을 사용했습니다.
참고: "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>";

언급URL : https://stackoverflow.com/questions/152006/change-mime-type-of-output-in-php

반응형