change mime type of output in php

后端 未结 6 1428
时光取名叫无心
时光取名叫无心 2020-12-03 04:32

I\'ve got a php script. Most of the time the script returns html, which is working fine, but on one occasion (parameter ?Format=XML) the script returns XML instead of HTML.<

相关标签:
6条回答
  • 2020-12-03 04:37

    I will answer to the update, since the previous answers are good.
    I have read that Internet Explorer is well known for ignoring Mime type headers (most of the time?) to rely on content of the file (which can cause problems in some cases).

    Mmm, I did a simple test:

    <?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 displays it correctly as XML. Even if I remove the xml declaration.
    You should indicate which version is problematic.

    Actually, as I wrote above, with IE (6 at least), you don't even need a content-type, it recognize XML data and display it as a tree. Is your XML correct?

    [Update] Tried with IE7 as well, adding ?format=xml too, still displaying XML correctly. If I send malformed XML, IE displays an error. Tested on WinXP Pro SP2+

    0 讨论(0)
  • 2020-12-03 04:38

    You should send a Content-Type header before you send any output.

    header('Content-Type: text/xml');
    
    0 讨论(0)
  • 2020-12-03 04:39
    header('Content-Type: application/xml; charset=utf-8');
    

    You can add encoding as well in the same line. I added utf-8, which is most common.

    0 讨论(0)
  • 2020-12-03 04:41

    Set the Content-Type header:

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

    Though you should probably use "application/xml" instead.

    0 讨论(0)
  • 2020-12-03 04:48
    header('Content-type: application/xml');
    

    More information available at the PHP documentation for header()

    0 讨论(0)
  • 2020-12-03 04:51

    I just used the following:
    NOTE: I am using "i" for sql improved extension.

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

    Iterate through the rows, printing XML nodes for each

    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>";
    
    0 讨论(0)
提交回复
热议问题