Php can';下载xml时,文档开头不带2-3个空格
我的php代码中有这个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文件是正确的 写入文件的
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 ';