PHP curl可以显示URL的输出,例如“ HTTP / 1.1 200 OK”

时间:2018-09-21 15:37:35

标签: php http curl

我正在尝试获取响应/状态代码,包括多个URL的标题。我的第一次尝试成功获取了状态代码,即200或301或302。但是我希望输出类似于HTTP/1.1 200 OKHTTP/1.1 302 Found等。

下面是我的代码,其中仅获得响应代码,即200301.

<?php
$line = "https://www.pnc.com";
        $ch = curl_init($line);
        curl_setopt($ch, CURLOPT_URL, $line);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_HEADER,true);
        curl_setopt($ch, CURLOPT_NOBODY, true);
        curl_setopt($ch, CURLOPT_TIMEOUT,10);
        $out = curl_exec($ch);
        $ret = true;
        if ($out !== false) {
                $statuscode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
                echo "Response Code:" .$statuscode. "\r";
        }
        curl_close($ch);
?>

实际输出

Response Code:HTTP/1.1 200 OK
ETag: "846caf551746b12e876c0bad5a50830d:1475788950"
Last-Modified: Thu, 06 Oct 2016 21:22:30 GMT
Accept-Ranges: bytes
Content-Length: 17609
Content-Type: text/html
Expires: Fri, 21 Sep 2018 15:35:01 GMT
Cache-Control: max-age=0, no-cache, no-store
Pragma: no-cache
Date: Fri, 21 Sep 2018 15:35:01 GMT
Connection: keep-alive

预期产量

HTTP/1.1 200 OK.

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

可以使用strtok

示例:

$statuscode = strtok( $statuscode, "\n" );

-或-

使用explode非常标准:

$statuscode = explode( "\n", $statuscode )[0];

肯定还有其他方法

但是,最干净的方法可能是使用cURL本身:

$response = curl_getinfo( $ch, CURLINFO_HTTP_CODE );