xml文件中无法删除的无法删除的换行符

时间:2010-12-17 17:46:33

标签: php sql xml

所以我有一个生成xml文件的sql数据库。此xml文件放在Web服务器上,然后由php文件解析。不幸的是,随机有时会在xml文件中出现换行符,导致无法解析它。

http://imgur.com/jNgiE

从第12-14行可以看出。有一个linebreak。但我不明白为什么。我甚至编写了一个脚本来删除回车符和换行符,但仍然保留了换行符。有人有什么想法吗?

$inputXML = file_get_contents("ukso.xml");
$fixedXML = str_replace("\r","",$inputXML);
$fixedXML = str_replace("\n","",$inputXML);
$fixedXML = str_replace("  ","",$inputXML);
$myFile = "ukso.xml";
print $fixedXML;
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $fixedXML);
fclose($fh);

2 个答案:

答案 0 :(得分:4)

您删除换行符的代码已损坏。进行以下更改:

$inputXML = file_get_contents("ukso.xml");
$fixedXML = str_replace("\r","",$inputXML);
$fixedXML = str_replace("\n","",$fixedXML); // note: reference the correct variable here
$fixedXML = str_replace("  ","",$fixedXML); // and here.
$myFile = "ukso.xml";
print $fixedXML;
$fh = fopen($myFile, 'w') or die("can't open file");
fwrite($fh, $fixedXML);
fclose($fh);

你拥有的代码只是修剪双倍空格。

答案 1 :(得分:1)

我看到你正在使用notepad ++

进入视图显示符号 - 显示所有字符。这将告诉你文件中确切的字符。

换行也可能是因为线路太长了。 XML文件通常设计为在标记的末尾有换行符,并且您可能遇到其中一个程序中某个行长度过长的情况。 (通常他们创建一个固定的缓冲区并尽可能多地读入,如果它太长,程序将会删除该行)