php - 在源代码中,仅使用 XML> PHP

  显示原文与译文双语对照的内容
119 3

我有一个小问题,我使用的一部分的API使用一个in来处理XML中的成功/错误消息。

因此我们使用表单来发布数据,它返回的数据如下面的示例所示:

<rsp stat="ok"> 
 <success msg="accepted" transactionid="505eeb9c43969d4919c0a6b3f7a4dfbb" messageid="a92eff8d65cf48e9c6e96702a7b07400"/> 
</rsp>

下面是使用的大部分脚本:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
//ToDo: Replace the placeholders in brackets with your data.
//For example - curl_setopt($ch, CURLOPT_UsERPWD, 'SMSUser:PassW0rD#');
curl_setopt($ch, CURLOPT_USERPWD, '');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 100);
$xml = curl_exec($ch);
if (curl_error($ch)) {
print"ERROR". curl_error($ch)."n
"; } curl_close($ch); print_r($xml);

唯一的问题是,当它通过print_r命令进行分析和显示时,它只是通过源代码显示。

基本上我们想要一个系统,如果 rsp stat="行"然后"已经发送""未发送"。

时间:原作者:0个回答

97 0

嗯,一个简单的方法是:

if (strpos($xml, 'stat="ok"')!== false) {
 echo"sent";
} else {
 echo"unsent";
}

http://codepad.org/pkzsfsMk

这将取代 print($xml);

原作者:
127 5

将该代码放入函数中,并让函数返回你的$xml.

假设你有一个名为 getRspStat()的函数,你可以这样做:

 echo getRspStat();
原作者:
116 5

如果你执行以下操作:

( 请参见 CodePad.org )

function xmlRequestWasSuccessful($xml) {
 $result = simplexml_load_string($xml);
 $result = (string)$result['stat'];
 if ($result == 'ok') {
 return true;
 } else {
 return false;
 }
}
$xml = '<rsp stat="ok">
<success msg="accepted" transactionid="505eeb9c43969d4919c0a6b3f7a4dfbb" messageid="a92eff8d65cf48e9c6e96702a7b07400"/>
</rsp>';
$stat = xmlRequestWasSuccessful($xml);

你将在结果( $stat 变量) 中收到'true'布尔值。调整它以支持出现错误时的情况。因为在发生错误时,没有详细信息,这就是你现在可以以如何执行的操作:

if ($stat) {
//do something on success ('sent' something)
} else {
//do something on success (display 'unsent' message for example)
}
原作者:
...