Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php XML解析错误_Php_Xml - Fatal编程技术网

Php XML解析错误

Php XML解析错误,php,xml,Php,Xml,我有一个有效的XML 它要求我将整个元数据记录视为元数据元素“dataxml”的值,换行符(和百分号)用百分号(即“转义百分号”)表示 因此,我做了以下工作 注意:它只询问了以下百分比:\n、\r、:和%,因此我只替换了这些百分比 $input .= 'dataxml: ' . str_replace(array(chr(hexdec('3A')),chr(hexdec('25')),chr(hexdec('0A')),chr(hexdec('0D'))),array('%3A', '%25',

我有一个有效的XML

它要求我将整个元数据记录视为元数据元素“dataxml”的值,换行符(和百分号)用百分号(即“转义百分号”)表示

因此,我做了以下工作

注意:它只询问了以下百分比:\n、\r、:和%,因此我只替换了这些百分比

$input .= 'dataxml: ' . str_replace(array(chr(hexdec('3A')),chr(hexdec('25')),chr(hexdec('0A')),chr(hexdec('0D'))),array('%3A', '%25', '%0A', '%0D'), $xmlfile) . "\n";
但它会弹出以下错误:

400 error:'dataxml': XML parse error: xmlns: URI http%253A//dataxml.org/schema/kernel-2.1 is not absolute

有人能指出我做错了什么吗?

http://中的冒号被替换了两次:首先冒号被替换为
%3A
,然后替换的百分比被替换为
%25

可以使用该函数避免替换字符串中已替换的部分

比如说,

$input  .= 'dataxml: ' . strtr($xmlfile, array(":" => "%3A", "%" => "%25", "\n" => "%0A", "\r" => "%0D")) . "\n";

http://
中的冒号被替换了两次:首先,冒号被替换为
%3A
,然后替换中的百分比被替换为
%25

可以使用该函数避免替换字符串中已替换的部分

比如说,

$input  .= 'dataxml: ' . strtr($xmlfile, array(":" => "%3A", "%" => "%25", "\n" => "%0A", "\r" => "%0D")) . "\n";

有没有一种方法可以将strtr()合并到$input?当然,就像你的示例中一样。我的意思是如何将strtr()添加到上面的行?我已经编辑过,使其看起来像你的示例。有没有一种方法可以将strtr()合并到$input?当然,就像你的示例中一样。我的意思是如何添加strtr()对于上面的一行,我将其编辑为与您的示例类似。