所以我有一个生成xml文件的sql数据库。此xml文件放在Web服务器上,然后由php文件解析。不幸的是,随机有时会在xml文件中出现换行符,导致无法解析它。
从第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);
答案 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文件通常设计为在标记的末尾有换行符,并且您可能遇到其中一个程序中某个行长度过长的情况。 (通常他们创建一个固定的缓冲区并尽可能多地读入,如果它太长,程序将会删除该行)