检查响应php中的xml是否无效

时间:2013-06-10 21:24:17

标签: php xml

我通过curl发出通常的请求来获取xml文件

$userAgent = 'Mozilla/5.0 (Windows NT 6.1; rv:21.0) Gecko/20100101 Firefox/21.0';
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $requestUrl);
        curl_setopt($ch, CURLOPT_REFERER, $requestUrl);
        curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
        $output = curl_exec($ch);
        curl_close($ch);

然后我用

$xml = simplexml_load_string($output);

但是我遇到了一个具有无效xml结构的url,因此当我使用simplexml_load_string函数时它会出错,并尝试在浏览器中打开它显示这个

This page contains the following errors:

error on line 3 at column 53: invalid character in attribute value

所以,我想尝试检查响应是否包含该错误,以便我可以在我的代码中执行必要的操作

我试过这样的事情

if (strpos($output, "This page contains the following errors:") === false) {
    echo "valid xml";
} else {
    echo "invalid xml structure";
}

但它不起作用,即使url返回无效的xml,毕竟它无法在响应中找到该文本。

由于

1 个答案:

答案 0 :(得分:1)

您可以使用libxml_use_internal_errors(true)关闭错误,并使用libxml_get_errors()根据需要获取错误信息。

http://php.net/manual/en/function.libxml-use-internal-errors.php