XML文件未加载

时间:2013-04-03 17:47:16

标签: php xml

我是PHP的新手,我试图从像这样的Web服务的响应中读取: http://voip.letscall.pt/VSServices/sendsms.ashx?login=123456&pass=3663&from=john&to=peter&text=hello

但到目前为止,我还没有成功阅读它得到的答案。这是我到目前为止所得到的

<?php

    header("Content-Type: text/plain;charset=utf-8");

    $url = 'http://voip.letscall.pt/VSServices/sendsms.ashx?login=123456&pass=3663&from=john&to=peter&text=hello';

    $xml = simplexml_load_file($url);

    echo $xml;

?>

提前致谢!!

3 个答案:

答案 0 :(得分:1)

错误报告告诉我,您所呈现的内容与您的回复之间存在编码问题:

error_reporting(E_ALL);
header("Content-Type: text/plain;charset=utf-8");
  

警告:simplexml_load_file():http://voip.letscall.pt/VSServices/sendsms.ashx?login=123456&pass=3663&from=john&to=peter&text=hello:1:解析器错误:文档标记为UTF-16但具有UTF-8内容

响应:

<?xml version="1.0" encoding="***utf-16***"?>
<response>
  <sms_response_code>400</sms_response_code>
  <sms_response_text>Authorization failed.</sms_response_text>
  <sms_response_destination />
</response>

答案 1 :(得分:0)

尝试通过字符串代替:

$xml = simplexml_load_string(file_get_contents($url));

答案 2 :(得分:0)

源XML格式不正确。 XML序言说这个xml文件是utf-16,所以这就是它解析文件的方式。但该文件 utf-16编码,它是utf-8编码。

告诉来源修复他们的xml。如果他们不这样做,那么你必须在解析它之前更改XML,这很容易出错并且 icky 。 E.g:

$xml = preg_replace(
          '/^(<\?[xX][mM][lL]\s+[^\?\>]+encoding\s*=\s*([\'"]))utf-16\2/u',
          '\1utf-8\2', file_get_contents($url));