我正在使用来自php.net manuals上的热门评论的cURL函数,但该函数的参数(即指定URL)未被识别或启动。现在当我启用CURLOPT_URL
并在数组中指定URL时,它显示网页并且数组返回相应的信息,但我不希望显示网页,只返回数组中的信息,但是curl_exec需要总和全部显示网页。
我做错了什么?
//defines the function get_web_page
$url = "http://ulrichzukowebtv.comli.com";
function get_web_page($url)
{
$options = array(
//CURLOPT_URL => 'http://ulrichzukowebtv.comli.com',
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle compressed
CURLOPT_USERAGENT => "spider", // who am i
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
return $header;
} //end defining function
$curl_data = "var1=60&var2=test";
//call the function
$response = get_web_page($url, $curl_data);
print '<pre>';
//Returns an array containing all the CURL flags specified
print_r($response);
答案 0 :(得分:1)
尝试使用
CURLOPT_RETURNTRANSFER => false,
我所知道的,如果将returntransfer设置为TRUE,则会在浏览器中显示该网页。所有过滤器和其他编码都在返回后进行,因此您无法查看它们
并且不要担心,如果设置为false,仍然会卷曲页面,并且无论你将编码什么,都会执行任务..
希望这会对你有帮助..
答案 1 :(得分:0)
试试这个,看看它是否符合您的要求。我实际上没有改变那么多,只是重构代码以使其更容易阅读并添加一些更具描述性/可读性的注释来解释所有内容的作用。在我改变了什么的地方,有一条评论解释了我改变了原因。
<?php
function get_web_page ($url, $params = NULL) {
// Add a query string to the URL if one was supplied.
// Previously your second argument $curl_data was unhandled and ignored.
if (is_array($params) || is_object($params)) {
// Build a query string from an associative array or object and append to the URL
$url .= '?'.http_build_query($params);
} else if ($params !== NULL) {
// Append scalar values directly to the URL
$url .= '?'.$params;
}
// Define the options for cURL
$options = array (
CURLOPT_URL => $url, // URL we will be loading
CURLOPT_RETURNTRANSFER => true, // Return data instead of outputting it
CURLOPT_HEADER => false, // Omit headers from the return value
CURLOPT_FOLLOWLOCATION => true, // Follow redirects
CURLOPT_ENCODING => "", // Handle compressed
CURLOPT_USERAGENT => "spider", // Tell the server who we are
CURLOPT_AUTOREFERER => true, // Set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // Timeout on connect (2 minutes is a very long time...!)
CURLOPT_TIMEOUT => 120, // Timeout on response (2 minutes is a very long time...!)
CURLOPT_MAXREDIRS => 10 // Stop after 10 redirects
);
// Initialise cURL and set the options we defined above
$ch = curl_init();
curl_setopt_array($ch, $options);
// Make the request
$content = curl_exec($ch);
// Fetch the result info into an array
$result = array();
$result['options'] = $options; // The options used for the request
$result['content'] = $content; // The body of the response from the server
$result['header'] = curl_getinfo($ch); // Information about the request, including some headers
$result['errno'] = curl_errno($ch); // The numeric error code of the result
$result['errmsg'] = curl_error($ch); // The textual error of the result
// Close the curl handle
curl_close($ch);
// Return the result info
return $result;
} // End function definition
// Define the URL to load
$url = "http://ulrichzukowebtv.comli.com/"; // You need the trailing forward slash if you are loading the root of the domain
// Define the GET parameters to pass
// We'll define this as an array to make if easier to read
$params = array (
'var1' => 60,
'var2' => 'test'
);
// Call the function
$response = get_web_page($url, $params);
// Show the result - if you don't want the page to be output, remove these three lines
print '<pre>';
print_r($response);
print '<pre>';