Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP中的Curl将HTML检索到变量无效_Php_Curl - Fatal编程技术网

PHP中的Curl将HTML检索到变量无效

PHP中的Curl将HTML检索到变量无效,php,curl,Php,Curl,我的代码片段(这是在前面的Curl命令之后,用于登录和存储cookie): 显示的结果只是打印标题。换句话说,实际的源HTML似乎没有保存到$result变量中。我知道结果就在那里,因为当我在检索到的页面上查看源代码时,一切都在那里。如果有区别的话,我请求的页面就是XML 谢谢替换打印“结果:”。$result 与 如果希望显示,则需要这样做 您已设置此变量: curl_setopt($curl,CURLOPT_头,1) 这就是为什么你会得到标题 您正在将结果打印到浏览器中,浏览器会看到XML标

我的代码片段(这是在前面的Curl命令之后,用于登录和存储cookie):

显示的结果只是打印标题。换句话说,实际的源HTML似乎没有保存到
$result
变量中。我知道结果就在那里,因为当我在检索到的页面上查看源代码时,一切都在那里。如果有区别的话,我请求的页面就是XML


谢谢

替换
打印“结果:”。$result


如果希望显示
,则需要这样做

您已设置此变量:

curl_setopt($curl,CURLOPT_头,1)

这就是为什么你会得到标题


您正在将结果打印到浏览器中,浏览器会看到XML标记并使用它们执行XML操作。数据在那里是因为您在查看->源时看到它。如果删除标题,浏览器可能会抱怨缺少样式表并显示原始XML。但正如你已经向自己证明的那样,你拥有数据。

要详细说明@rand'Chris的答案,你可以
删除这两个:

curl_setopt($curl,CURLOPT_头,1)

curl\u setopt($curl,CURLOPT\u VERBOSE,1)


您将不再从
example.com
接收标题。当然,由于您访问的是另一个站点,这可能不是完整的(甚至是正确的)解决方案。

您是正确的,我确实有数据,但我需要将其分配给一个变量以进行进一步分析。我假设您看到“result:[headers-n-stuff]”。如果是这样,您的数据就在变量$result中,这就是您正在打印的内容。不过,如果您的意思是这样的话,您需要做一些其他事情来处理XML。我的目标是从XML中提取值,但是我假设如果代码保存到变量中,然后通过打印它,它应该是可见的。当我对非XML页面使用curl时,浏览器实际上呈现HTML。我假设对于XML,它至少应该允许我显示原始数据,这取决于您的浏览器,也可能取决于您的web服务器。尝试类似于
标题(“内容类型:text/xml”)位于PHP页面顶部,以便浏览器知道它不是文本。如果XML格式不好,Chrome肯定会抱怨:这也不是完全正确的——虽然将CURLOPT_HEADER设置为0会从输出中删除头,但您还需要将CURLOPT_VERBOSE设置为0。我认为您最好这样做(因为您的代码使用的是example.com)是提供您从中检索XML数据的确切站点,或者在某个地方找到一个复制您所看到的内容的类似站点。我不能提供该站点作为登录的后台。它实际上是一个非常简单的XML结构。在我使用str_word_count($result)进行测试时,$result变量似乎没有获取数据,它正在检索0。在进一步测试时,如果我设置curl_setopt($curl,CURLOPT_RETURNTRANSFER,FALSE);跳过变量,它仍然不返回任何内容。就好像CURL命令不起作用一样,但由于某种原因,数据确实显示在“查看源代码”中。CURL命令在BASH中也可以正常工作,因此必须在这里执行其他操作。您可以在其他XML源上尝试您的代码,看看它是否起作用吗?然后我们可以把范围缩小到您的代码或站点本身。
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,"https://www.example.com");   
curl_setopt($curl,CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729)");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_BINARYTRANSFER, true);
curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookie.txt');
$result = curl_exec ($curl);
if ($result === FALSE) {
    echo "cURL Error: " . curl_error($curl);
}
curl_close ($curl);
print 'result: '.$result;
echo htmlspecialchars($result);