我有一个有效 XML。
它要求我将整个元数据记录视为元数据元素“dataxml”的值,其中换行符(和百分号)用百分号表示(即“百分比转义”)
所以我做了以下
注意:它只询问了以下百分比:\ n,\ r,:和%所以我只是str_replaced那些
$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
任何人都可以指出我做错了吗?
答案 0 :(得分:1)
http://
中的冒号被替换两次:首先冒号被%3A
替换,然后替换中的百分比被%25
替换。
您可以使用函数strtr()
来避免替换已经替换的字符串部分。
例如,
$input .= 'dataxml: ' . strtr($xmlfile, array(":" => "%3A", "%" => "%25", "\n" => "%0A", "\r" => "%0D")) . "\n";