我曾经用这样的PHP脚本解析一些RSS XML文件
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://www.pinterest.com/myaccount/rss');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$contenu = curl_exec($curl);
$xml = new simpleXMLElement ($contenu);
但是有些日子我现在遇到了这个错误
PHP致命错误:未捕获的异常'Exception',消息'String无法解析为XML'
[Tue Mar 03 15:23:33.141113 2015] [:error] [pid 4748] [client 172.19.8.44:56794] PHP Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /var/www/html/drupal/includes/common.inc(1743) : eval()'d code:6\nStack trace:\n#0 /var/www/html/drupal/includes/common.inc(1743) : eval()'d code(6): SimpleXMLElement->__construct('')\n#1 /var/www/html/drupal/includes/common.inc(1743): eval()\n#2 /var/www/html/drupal/modules/php/php.module(81): drupal_eval('<?php?$curl = c...')\n#3 [internal function]: php_filter('process', '0', '5', '<?php?$curl = c...', '5:cc75e663c59c9...')\n#4 /var/www/html/drupal/includes/module.inc(476): call_user_func_array('php_filter', Array)\n#5 /var/www/html/drupal/modules/filter/filter.module(455): module_invoke('php', 'filter', 'process', '0', '5', '<?php?$curl = c...', '5:cc75e663c59c9...')\n#6 /var/www/html/drupal/modules/node/node.module(1054): check_markup('<?php??$curl = ...', '5', false)\n#7 /var/www/html/drupal/modules/node/node.module(1098): node_prepare(Object(stdClass), false)\n#8 /var/www/html/drupal/modules/node/node.module(1019): node_build_cont in /var/www/html/drupal/includes/common.inc(1743) : eval()'d code on line 6,
我不知道发生了什么。
答案 0 :(得分:0)
因此,错误基本上是说您正在获取字符串,但您尝试将其视为XML。
查看您的来源 - http://www.pinterest.com/myaccount/rss。 您的Web服务器可以访问应该存在的XML吗?因为我确定无法做到。如果我去那里,我会被重定向到其他页面。当然,如果我在那里制作了一个cURL命令,我将获得该页面...作为一个字符串,因为它就是这样,而不是XML。
我认为这确实是XML内容,但您可能需要登录才能查看它 - 并且存在您的问题 - 您的Web服务器没有对Pinterest的有效登录,因此无法查看XML。您可能希望调查是否可以使用cURL进行身份验证,然后访问该XML。
答案 1 :(得分:0)
错误是正确的,您在问题中提供的网址不包含任何XML:
http://www.pinterest.com/myaccount/rss
但是,有一个您最有可能要使用的URL,它确实包含XML:
https://www.pinterest.com/myaccount/feed.rss
请注意,这与Drupal无关。只是因为您没有向SimpleXMLElement的构造函数提供有效的XML。