PHP開發中get_headers函數的多種應用

PHP中提供了許多強大的函數用於開發,其中get_headers是一種非常有用的函數。該函數會返回指定URL所引用的所有HTTP頭信息,包括響應代碼、響應消息、日期、伺服器信息和其他頭信息。在本文中,我們將從多個方面對get_headers進行詳細闡述。

一、獲取遠程文件的HTTP頭信息

get_headers最常用的功能之一就是獲取遠程文件的HTTP頭信息。通過該函數,可以獲取到伺服器返回的各種信息,如響應代碼、響應消息、日期、伺服器信息、資源類型、資源大小、緩存時間等等。例如,我們可以編寫下面的代碼來獲取指定URL的HTTP頭信息:

$url = 'https://www.example.com/';
$headers = get_headers($url);

foreach ($headers as $header) {
    echo $header . '\n';
}

上面的代碼首先指定了要獲取HTTP頭信息的URL,然後調用get_headers函數獲取到$header數組。我們使用foreach循環遍曆數組,輸出每個頭信息。這樣我們就可以在命令行或瀏覽器中查看響應的HTTP頭信息。

二、判斷URL是否有效

除了獲取HTTP頭信息,get_headers函數還常用於判斷指定URL是否有效或是否可以正常訪問。例如,我們可以編寫下面的代碼來判斷一個URL是否可以正常訪問:

$url = 'https://www.example.com/';
$headers = @get_headers($url);

if ($headers && strpos($headers[0], '200')){
    echo 'URL is valid.';
} else {
    echo 'URL is not valid.';
}

上面的代碼首先指定要判斷的URL,然後使用@符號屏蔽掉get_headers函數可能產生的錯誤信息,將返回結果存儲在$headers數組中。我們通過判斷數組中第一個元素是否包含字元’200’,從而判斷URL是否有效。

三、獲取指定URL的重定向信息

get_headers函數也可以用於獲取指定URL的重定向信息。例如,我們可以編寫下面的代碼來獲取百度搜索的重定向信息。

$url = 'https://www.baidu.com/s?wd=example';
$headers = get_headers($url,1);

if (isset($headers['Location'])) {
    echo 'Redirect URL: ' . $headers['Location'];
} else {
    echo 'No redirect URL.';
}

上面的代碼首先指定要獲取重定向信息的URL,然後將第二個參數設置為1以獲取所有HTTP頭信息。我們通過判斷$headers數組中是否存在Location鍵來判斷是否存在重定向信息,並輸出重定向的URL。

四、發送自定義HTTP頭信息

get_headers函數除了從伺服器獲取HTTP頭信息外,還可以向伺服器發送自定義的HTTP頭信息。例如,我們可以編寫下面的代碼來向伺服器發送自定義的HTTP頭信息,以便在header中含有User-Agent欄位,請注意本例中的HTML實體化:

$opts = array(
    'http' => array(
        'method'=>"GET",
        'header'=>"User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)\r\n"
    )
);
$context = stream_context_create($opts);
$url = 'https://www.example.com/';
$headers = get_headers($url,false, $context);

foreach ($headers as $header) {
    echo htmlentities($header) . '<br />';
}

上面的代碼通過$opts數組定義了要發送的HTTP頭信息,其中包含User-Agent信息。我們通過stream_context_create函數創建一個上下文,使用get_headers函數並將上下文傳遞給它。最後,我們在循環中輸出伺服器返回的HTTP頭信息,注意使用htmlentities函數進行HTML實體化,以避免在瀏覽器中解析出現問題。

五、使用get_headers獲取網站內容

在一些情況下,我們需要獲取目標網站特定位置的HTML內容,get_headers是一種可以幫助我們完成這個任務的簡單方式。例如,我們可以編寫下面的代碼來提取百度首頁的頂部標籤信息:

$url = 'https://www.baidu.com/';
$headers = get_headers($url, 1);

$data = file_get_contents($url, false, stream_context_create(array(
    'http' => array(
        'method' => 'GET',
        'header' => "User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36\r\n"
    )
)));

if (isset($headers['Content-Type']) && strpos($headers['Content-Type'], 'text/html') !== false) {
    preg_match('/^\<.+?\>/is', $data, $match);
    echo 'HTML: ' . htmlentities($match[0]);
} else {
    echo 'No HTML content.';
}

上面的代碼首先指定要獲取HTML內容的URL,並使用get_headers函數獲取HTTP頭信息,將結果存儲在$headers數組中。接下來,我們使用file_get_contents來獲取頁面內容,並在此期間使用stream_context_create發送自定義的HTTP頭消息。最後,我們使用preg_match函數匹配HTML內容,並輸出匹配的第一個標籤。需要注意的是,我們在輸出HTML標籤之前使用htmlentities函數進行了HTML實體化。

六、小結

get_headers是一種非常實用的PHP函數,可以用於多種不同的目的,包括獲取遠程文件的HTTP頭信息、判斷URL是否有效、獲取重定向信息和發送自定義HTTP頭信息。通過本文的介紹,我們相信您已經能夠在您的項目中合理運用get_headers函數了。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/160067.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-20 00:17
下一篇 2024-11-20 00:17

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • Python返回數組:一次性搞定多種數據類型

    Python是一種多用途的高級編程語言,具有高效性和易讀性的特點,因此被廣泛應用於數據科學、機器學習、Web開發、遊戲開發等各個領域。其中,Python返回數組也是一項非常強大的功…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29

發表回復

登錄後才能評論