是一个短信接口:调用的代码如下:$res = file_get_contents("http://XXXXXXX/webservice.asmx/mt?Sn=$name&Pwd=$pwd&mobile=$tel&content=$msg");
print_r($res);print_r($res)后获得一段XML代码,如下:  <?xml version="1.0" encoding="utf-8" ?> 
  <int xmlns="http://tempuri.org/">0</int> 
看到这段代码中的0了么?我标了红色。如果返回值是0,则发送成功。
但是我这样判断是不可以的:if($res=="0"){
mysql_query("update sms set etime=now(),wei='发送成功' where sms_id='$sms_id'");
}请问我应该怎样判断获取到了0并在数据库中更新发送状态?

解决方案 »

  1.   

    前提是只有一个<int xmlns="http://tempuri.org/">0</int>
    用正则判断preg_match('/<int xmlns="http\:\/\/tempuri.org\/">0<\/int>/uU', $res)
    判断$match 为True或False
      

  2.   

    不明白,应该是用php先解析XML吧?
    有人能版本帮帮我么?
      

  3.   

    preg_match('/<int xmlns="http\:\/\/tempuri\.org\/">(.+)<\/int>/s', $res,$r);
    if($r[1]=="0"){
    mysql_query("update sms set etime=now(),wei='发送成功' where sms_id='$sms_id'");
                }
      

  4.   

    $xml = simplexml_load_string($str); 
    echo  $xml[0];
      

  5.   

    返回xml是个字符串(而且非常短),你要判断的也是个字符串,所以没必要先解析xml
    当然你去解析也不是错误,只是多耗点资源而已,先加载一个dom class,再parse
    如果你要获得一个xml节点(复杂点的),再考虑后一种方法吧#3的正则是一样的,但从返回的字串判断
    你这情况就执行与不执行的布林值,所以我觉得连返回都可以省了
    直接判断preg_match()是否True就够了
      

  6.   

    网上下载个类文件 就可以 了  我最近也在到csv  xml文件导入数据库