簡體   English   中英

我怎樣才能只回顯我想要的 header? php

[英]How i can echo only the header that i want? php

所以我只想回應一個 header 而不是全部。

以服務器 header 為例,其中包含它是什么服務器的信息。

或 X 驅動:PHP/版本 header。

我知道我可以使用 print_r($headers["0"]); 但這里的問題是我不知道 header 到底是多少。

Array ( [0] => HTTP/1.1 403 Forbidden [1] => Date: Fri, 26 Jun 2020 21:44:53 GMT [2] => Content-Type: text/html; charset=UTF-8 [3] => Connection: close [4] => CF-Chl-Bypass: 1 [5] => Set-Cookie: __cfduid=d3cb45768070a21a77835f417592827541593207893; expires=Sun, 26-Jul-20 21:44:53 GMT; path=/; domain=.onetap.com; HttpOnly; SameSite=Lax...................

我如何在不知道數組編號的情況下只打印我想要的 header。

$url = "https://www.google.com/";
$headers = get_header($url);

print_r($headers["0"]);

使用第二個參數

print_r(get_headers($url, 1));

Array
(
    [0] => HTTP/1.1 200 OK
    [Date] => Sat, 29 May 2004 12:28:14 GMT
    [Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)
    [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
    [ETag] => "3f80f-1b6-3e1cb03b"
    [Accept-Ranges] => bytes
    [Content-Length] => 438
    [Connection] => close
    [Content-Type] => text/html
)

因此您可以訪問特定的 header。

遍歷您的$headers並在每個 header 中搜索 substring:

$headers = get_headers($url);
foreach ($headers as $header) {
    if (false !== strpos($header, 'X-powered:')) {
        echo $header;
        // now extract required value, e.g:
        $data = explode('/', $header);
        echo 'Version is: ' . $data[1];
        
        // use break to stop further looping
        break;
    }
}

使用get_headers的第二個參數為 1,甚至會給您一個數組,因此您可以使用issetarray_key_exists檢查所需的鍵是否存在:

$headers = get_headers($url);
if (isset($headers['X-powered'])) {
    echo $headers['X-powered'];
    // now extract required value, e.g:
    $data = explode('/', $headers['X-powered']);
    echo 'Version is: ' . $data[1];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM