返回后非空字符串为空

时间:2014-09-04 11:38:17

标签: php curl return

我正在编写一个php脚本,通过cURL处理页面处理,所以我有一个函数来通过URL获取和返回页面

function get_url($Url){
    if (!function_exists('curl_init')){
        die('Sorry cURL is not installed!');
    }
    set_time_limit (20);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $Url);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array("Cookie: age_gate_birthday=19901101"));
    curl_setopt($ch, CURLOPT_REFERER, "http://www.facebook.com");
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $output = curl_exec($ch);
    return $output;
}

在此函数中回显$ output总是返回一个HTML字符串,但是如果我在另一个函数中调用此函数

function get_vid ($sql, $url) {
    $data = get_url($url);
...

返回的值是一个空字符串,尽管当get_url()正在执行它时,$ output的值已经存在。

奇怪的是,错误仅存在于特定的URL中,但与其他URL一起正常工作。

感谢您的帮助!

更新:似乎CURL在特定链接上随机返回FALSE,这似乎是这个问题的罪魁祸首,但是curl_error是空的,所以我无法确定原因。

1 个答案:

答案 0 :(得分:1)

我认为这是因为你获得了http重定向。

尝试检查这样的http代码:

  if (curl_getinfo($ch,CURLINFO_HTTP_CODE) == 302) {
    // Manage http redirect here
  }