如何在实体中进行PHP SoapClient编码?

时间:2016-05-04 12:00:35

标签: php xml soap

根据https://www.w3.org/TR/REC-xml/#sec-line-ends \ n在xml文本实体中不是有效字符。所有\ n应该在XML字符串中转义为



但是,我尝试在soap呼叫中向我的后端服务器发送一封电子邮件,并且正在删除换行符。

所以我开始使用参数$arguments,这样: -

error_log(__FILE_.':'.__LINE__.' '.var_export($arguments, true));

返回

array('email_parameters' => array ('email_message' => "Title\n\nBody\nSignature"));

我拨打soapClient->__soapCall($method, $arguments);然后登录

error_log(__FILE_.':'.__LINE__.' '.var_export($this->soapClient->__getLastRequest(), true));

但是,我得到了"<email_message>Title\n\nBody\nSignature</email_message>"

根据w3规则,这是错误的。如果我提前尝试转义\ n,那么$argument

array('email_parameters' => array ('email_message' => "Title&#xA;&#xA;Body&#xA;Signature"))

然后我在请求中得到以下内容: -

<email_message>Title&amp;#xA;&amp;#xA;Body&#xA;Signature</email_message>`

那么如何才能让soap客户端正确编码\ n &#xA;&#10;,而不是对html实体进行双重编码?

0 个答案:

没有答案