2015-07-20 55 views
0

我使用NuSOAP在PHP中使用Web服务。PHP NuSOAP由于xsd的数据中包含nul字符而生成无效的XML:字符串

一切都很好,但是当来自db的数据包含一个空字符时, "\x00"这将使NuSOAP直接将它传递给XML消息。我还没有测试,但假设Unicode字节顺序标记"\xff\xfe""\xff\xff"也会产生类似的行为。

我知道,如果我在将数据传递给NuSOAP之前预处理我的数据以删除这些序列,这将解决问题,但这需要向许多地方添加代码,这些地方容易遗漏某些部分或忘记实施它用于新功能。

我的问题是如果有办法告诉NuSOAP逃脱/删除这些序列本身。

回答

0

大家都在推荐,使用NuSOAP进行新项目并不是一个好主意。但在我的情况下,有很多遗留代码取决于它。

我可以通过添加修补的NuSOAP库放弃NUL字符解决我的问题:

 $val = str_replace("\x00", '', $val); 

后:

 $val = str_replace('>', '>', $val); 

没有深入下去,并添加无效的Unicode的处理和物料清单。