PHP NuSOAP生成无效的XML,因为xsd:string的数据中有空字符


PHP NuSOAP generates invalid XML because of nul character in data for xsd:string

我有一个PHP web服务,使用NuSOAP。

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

我知道,如果我在将数据传递给NuSOAP之前预处理数据以删除这些序列,这将解决问题,但这将需要在许多地方添加代码,这很容易丢失某些部分或忘记为新函数实现它。

我的问题是,是否有一种方法可以告诉NuSOAP自己转义/删除这些序列

正如周围每个人所建议的那样,在新项目中使用NuSOAP并不是一个好主意。但在我的情况下,有很多遗留代码依赖于它。

我可以通过修补NuSOAP库来丢弃null字符来解决我的问题,添加:

        $val = str_replace("'x00", '', $val);
:后

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

没有深入并添加无效unicode和bom的处理。