检查返回的文件是否为XML

Mak*_*aks 3 php xml curl

我需要检查网站输出的返回值.如果有效登录详细信息,则返回XML文件,如果登录详细信息无效,则只返回一个字符串,表示"您输入的ID无效".

我的问题是我用这个代码来检查,

$ch = curl_init();

            curl_setopt($ch, CURLOPT_URL, $url);

            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

            $output = curl_exec($ch);

            curl_close($ch);

            if(simplexml_load_string($output)){
                echo 'Is XML';
             }else{
               echo 'Not XML';
                 }
Run Code Online (Sandbox Code Playgroud)

问题是它正在检查并显示消息,但我收到了这些错误

警告:simplexml_load_string()[function.simplexml-load-string]:实体:第1行:解析器错误:期望开始标记,'<'未找到

警告:simplexml_load_string()[function.simplexml-load-string]:

警告:simplexml_load_string()[function.simplexml-load-string]:^ in

有没有办法解决这些错误.我一直在互联网上搜索过去的一小时没有任何成功.

谢谢

Old*_*ool 13

检查前5个字符是否相等<?xml,这应该是一个非常好的线索.

if(substr($output, 0, 5) == "<?xml") {
    echo 'Is XML';
} else {
    echo 'Not XML';
}
Run Code Online (Sandbox Code Playgroud)

  • 有点晚了,但是:此解决方案不会将没有 XML 声明的有效 XML 1.0 文件视为它们的原样。建议使用 XML 声明,但不是强制性的。请参阅那边答案的第一段:/sf/answers/490544701/ (2认同)

ako*_*ond 9

$result = simplexml_load_string ($data, 'SimpleXmlElement', LIBXML_NOERROR+LIBXML_ERR_FATAL+LIBXML_ERR_NONE);
if (false == $result) echo 'error';
Run Code Online (Sandbox Code Playgroud)