2012-10-22 41 views
-1

我使用curl下載了一個json文件,並且我的腳本工作正常。但是我需要CURLOPT_HEADER的頭文件將它保存到一個單獨的文件中,或者添加到輸出數組中而不是放入同一個文件中,這可能嗎?現在一切都保存到這個文件中,我需要從文件中分離出頭文件是一個不必要的過程。當保存到文件時從curl單獨標題

/** 
* Send a GET requst 
* @param string $get 
* @return string 
*/ 
public function curl_get(array $get = NULL) 
{ 

    $url = $get['host'] .'/'. $get['service']; 
    $filename = PLUGIN_BASE . 'logs/'. $get['service'] .'_'. $this->nice_filename(); 
    $fp = fopen($filename, 'w'); 

    unset($get['host']); 
    unset($get['service']); 

    $defaults = array( 
     CURLOPT_URL => $url. (strpos($url, '?') === FALSE ? '?' : ''). http_build_query($get), 
     CURLOPT_HEADER => 1, 
     CURLOPT_RETURNTRANSFER => TRUE, 
     CURLOPT_TIMEOUT => 30, 
     CURLOPT_FILE => $fp 
    ); 

    $ch = curl_init(); 
    curl_setopt_array($ch, ($defaults)); 
    if(! $result = curl_exec($ch)) 
    { 
     //$result = curl_error($ch); 
     $filename = trigger_error(curl_error($ch)); 
    } 

    curl_close($ch); 
    fclose($fp); 

    $arg = array(
     'file'=>$filename, 
     'curl_id'=>$fp 
    ); 

    return $arg; 
} 

感謝

回答

0

頁眉從數據中包含只是\ r \ n中的線分開,所以你可以用爆炸來獲取數據。從curl選項中取出CURLOPT_FILE,分解返回的字符串以獲得單獨的部分,然後將它自己保存到文件中。

list($header , $data) = explode("\r\n\r\n" , $result , 2); 

,或者您可以使用打開另一個文件,並使用CURLOPT_WRITEHEADER選項寫頭到單獨的文件

3

您可以使用CURLOPT_HEADERFUNCTION指定被調用,像這樣對於每個接收頭功能:

function readHeader($ch, $header) 
{ 
    // do something with the value of `$header` 

    // you must return the length of the header that you received 
    return strlen($header); 
} 
相關問題