Php can';下载xml时,文档开头不带2-3个空格

Php can';下载xml时,文档开头不带2-3个空格,php,xml,download,Php,Xml,Download,我的php代码中有这个 header('Content-disposition: attachment; filename="'.$filename.'"'); header('Content-type: "text/xml"; charset="utf8"'); readfile($filename); 下载后我的文件 <?xml version="1.0" encoding="UTF-8"?> <root> 并且来自服务器的xml文件是正确的 写入文件的

我的php代码中有这个

 header('Content-disposition: attachment; filename="'.$filename.'"');
 header('Content-type: "text/xml"; charset="utf8"');
 readfile($filename);
下载后我的文件

  <?xml version="1.0" encoding="UTF-8"?>
<root>
并且来自服务器的xml文件是正确的

写入文件的函数:

This page contains the following errors:

error on line 1 at column 6: XML declaration allowed only at the start of the document
Below is a rendering of the page up to the first error.
public function toXML($filename){

    $qr = mysql_query("select * from passwords where user = '".encrypt($_SESSION['username'],$key)."'"); 

    $xml = '<?xml version="1.0" encoding="UTF-8"?>'."\n";

    $xml .= "<root>";
    $xml .= "\n";

    if (!$qr) {
        die('Invalid query: ' . mysql_error());
    }

    if(mysql_num_rows($qr)>0)
    {
       while($result_array = mysql_fetch_assoc($qr))
       {
          $xml .= '<passwords>';
          $xml .= "\n";

          foreach($result_array as $key => $value)
          {
             $xml .= "<$key>";

             $xml .= "$value";

             $xml .= "</$key>";

             $xml .= "\n";
          }

          $xml.="</passwords>\n";
       }
    }

    $xml .= '</root>';

    $fp = fopen($filename,"w");

    fputs($fp,$xml);

    fclose($fp);

    return true;

}
来自服务器的文件($filename文件)


8.
vbghjbhv
o0H0uTtsOFCYHTpiZZ2/J78W/Z+XU10NX5AUZDCUDU=
2VOF9KP2P298IBBIUHCFJEAOC1VJI40KKRATPIEV5EXG=
jhbvgi
2TPBCNCIQ+dbuEcyP6v6tZxrQeXcJfRl33YfQO3aFk=
商业
古杰夫提

一种解决方案是将文件存储在变量中, 然后在输出文件内容之前使用trim()

$file = file_get_contents($filename);
echo trim($file);

首先,检查您正在处理的文件是否保存在正确的字符集(不带BOM的UTF-8)

其次,我们看不到$filename的实际填充内容。假设它们在$contents变量中。可能你是这样填的:

$contents .= '
... something ';
确保填充时去掉空行,并按如下方式编写:

$contents .= '... something ';

。如果要输出xml,为什么要将其保存到文件中?我想将该文件保存在服务器上,可选部分是下载。我打赌在我的一个php文件中,开头前面有空格
@hek2mgl,后面有两个空格?>,现在它工作得很好,我仍然认为是下载的结果,因为在头文件之前我回显了文件,并且输出良好,@kloudew另一件我有时忽略的事情是php文件开头的空白,在开始标记之前。
$contents .= '
... something ';
$contents .= '... something ';