PHP NuSOAP 生成无效的 XML 因为 xsd:string 的数据中有 nul 字符
PHP NuSOAP generates invalid XML because of nul character in data for xsd:string
我在 PHP 中有一个 Web 服务,使用 NuSOAP。
一切都很好,但是当来自数据库的数据包含空字符时,例如"\x00"
这将使 NuSOAP 将其直接传递到 XML 消息中。我没有测试过,但假设 Unicode 字节顺序标记 "\xff\xfe"
和 "\xff\xff"
也会产生类似的行为。
我知道如果我在将数据传递给 NuSOAP 之前预处理我的数据以删除这些序列,这将解决问题,但这将需要在许多地方添加代码,这很容易丢失某些部分或忘记为新功能实施它。
我的问题是是否有办法告诉 NuSOAP 自己 escape/remove 这些序列。
正如周围每个人都在推荐的那样,对新项目使用 NuSOAP 并不是一个好主意。但就我而言,有很多遗留代码依赖于它。
我可以通过修补 NuSOAP 库以丢弃 nul 字符来解决我的问题,方法是添加:
$val = str_replace("\x00", '', $val);
之后:
$val = str_replace('>', '>', $val);
没有深入和添加对无效unicode和BOM的处理。
我在 PHP 中有一个 Web 服务,使用 NuSOAP。
一切都很好,但是当来自数据库的数据包含空字符时,例如"\x00"
这将使 NuSOAP 将其直接传递到 XML 消息中。我没有测试过,但假设 Unicode 字节顺序标记 "\xff\xfe"
和 "\xff\xff"
也会产生类似的行为。
我知道如果我在将数据传递给 NuSOAP 之前预处理我的数据以删除这些序列,这将解决问题,但这将需要在许多地方添加代码,这很容易丢失某些部分或忘记为新功能实施它。
我的问题是是否有办法告诉 NuSOAP 自己 escape/remove 这些序列。
正如周围每个人都在推荐的那样,对新项目使用 NuSOAP 并不是一个好主意。但就我而言,有很多遗留代码依赖于它。
我可以通过修补 NuSOAP 库以丢弃 nul 字符来解决我的问题,方法是添加:
$val = str_replace("\x00", '', $val);
之后:
$val = str_replace('>', '>', $val);
没有深入和添加对无效unicode和BOM的处理。