首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 四種常見網路資料抓取方法完整比較

     編輯:PHP 綜合知識

方法一:file_get_contents() GET 請求

最簡單的方式,需 allow_url_fopen=On:

$url = 'https://example.com/api';
$html = file_get_contents($url);
echo $html;

✅ 簡潔易用 ❌ 無法自訂 Header、超時、POST 資料

方法二:fopen() + stream_get_meta_data()

較底層的串流操作,可讀取 Header 資訊:

$fp = fopen('https://example.com/api', 'r');
$meta = stream_get_meta_data($fp);
$result = '';
while (!feof($fp)) {
    $result .= fgets($fp, 1024);
}
fclose($fp);
echo "Header: "; print_r($meta);
echo "Body: $result";

✅ 可獲取回應 Header ❌ 程式碼冗長、錯誤處理繁瑣

方法三:file_get_contents() + stream_context POST 請求

利用串流上下文發送 POST 資料:

$data = http_build_query([
    'foo' => 'bar',
    'site' => 'example.com'
]);

$options = [
    'http' => [
        'method' => 'POST',
        'header' => 'Content-type: application/x-www-form-urlencoded',
        'content' => $data,
        'timeout' => 30
    ]
];

$context = stream_context_create($options);
$result = file_get_contents('https://example.com/api', false, $context);
echo $result;

✅ 原生支援 POST、Header 自訂 ❌ 複雜請求(檔案上傳、Cookie 管理)較困難

方法四:cURL 庫(推薦生產環境)

功能最完整、效能最佳的 HTTP 客戶端:

$ch = curl_init('https://example.com/api?site=example.com');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 5,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_MAXREDIRS => 5,
    CURLOPT_SSL_VERIFYPEER => false, // 僅測試環境使用
]);

$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch);
}
curl_close($ch);
echo $response;

✅ 支援 HTTPS、Cookie、Proxy、斷點續傳、並發請求、詳細錯誤資訊 ❌ 需安裝擴充套件

選擇建議

場景推薦方法
簡單 GET、配置受限環境file_get_contents()
需自訂 Header、POST 表單stream_context + file_get_contents()
生產環境、複雜需求、高併發cURL
需檢查回應 Header、串流處理fopen() 串流

cURL 進階選項速查

  • CURLOPT_POSTFIELDS:POST 資料(陣列自動編碼為 multipart/form-data)
  • CURLOPT_HTTPHEADER:自訂請求 Header 陣列
  • CURLOPT_COOKIEJAR/COOKIEFILE:Cookie 持久化
  • CURLOPT_PROXY:代理伺服器
  • CURLOPT_WRITEFUNCTION:自訂回應寫入回調(大檔案下載)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved