php 如何在laravel 5.4中获取所有标题信息

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/42542061/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 02:37:28  来源:igfitidea点击:

how to get all the headers information in laravel 5.4

phplaravel-5.4

提问by Muhammad

when i print like:

当我打印时:

echo '<pre>';
print_r(getallheaders());

it gives output

它给出输出

[Host] => abc.com
    [User-Agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:51.0) Gecko/20100101 Firefox/51.0
    [Accept] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    [Accept-Language] => en-US,en;q=0.5
    [Accept-Encoding] => gzip, deflate
    [Cookie] => someth
    [Upgrade-Insecure-Requests] => 1
    [Cache-Control] => max-age=0
    [SM_TRANSACTIONID] => 000000000000000000000000b7857360-1499-58b735e6-68944700-eed22930b94f
    [SM_SDOMAIN] => abc.com
    [SM_REALM] => REALM-BEACONTRACK-DEV-Protect root
    [SM_REALMOID] => 06-000cd148-15d2-18a7-a771-71810afc4027
    [SM_AUTHTYPE] => Form
    ....... many more 

 [Accept] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    [Referer] => http://127.0.0.1:8000
    [Accept-Encoding] => gzip, deflate, sdch, br
    [Accept-Language] => en-US,en;q=0.8
    [Cookie] => XSRF-TOKEN=eyJpdiI6Im1UZ012bXhRQ1VVdEUra1d3Yko4ZEE9PSIsInZhbHVlIjoidnFqN0l6VUVBVjdKd2hWUitHazhlTWN1Z2puSW1LMlZTTU4yYW1GcVwvQWg1aEpkNklZWUkranBIZ3R1UGoxUUdMU1VFWVEzekViWTluSkk1c0FjNlZ3PT0iLCJtYWMiOiIxNGFmMGE1OWQ3OWNlZWY1Y2E4OGQ4MzY1MDg3ZmM2MDY5NzVmYTI2YmE3MzA3YWU2M2U2YjkyOWEzZTMzYWFkIn0%3D; beaconTrack_session=eyJpdiI6ImVWazMyK2JLbXlrN0lxMEVEdE1pTlE9PSIsInZhbHVlIjoiSTdIbVkyWmROSDZBXC8xVmZJdHEycmgwOFpFUm1BNUtWVFNyQjF0MjY5TTV6Qkd1aUFGSEJBcmRrQ3hvM1BxVXdld0tjWlwvcVNEeXcwQmdjWW5yUFwvb1E9PSIsIm1hYyI6IjgzZjRiOGExODc2NmI3Y2JjNDY1MWViMThlZmE0ODlhYjMyYzllMTE1OTNhNjM1NWE1ZDc0NWViZDFkMjA3ZTIifQ%3D%3D
)

but when i print using laravel functions like:

但是当我使用 laravel 函数打印时,例如:

print_r($request->header());or print_r($request->headers->all());

print_r($request->header());或者 print_r($request->headers->all());

it never print out my required variables in array. it print outs below output

它永远不会在数组中打印出我需要的变量。它在输出下方打印出来

Array
(
    [host] => Array
        (
            [0] => abc.com
        )

    [connection] => Array
        (
            [0] => keep-alive
        )

    [cache-control] => Array
        (
            [0] => max-age=0
        )

    [upgrade-insecure-requests] => Array
        (
            [0] => 1
        )

    [user-agent] => Array
        (
            [0] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
        )

    [accept] => Array
        (
            [0] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
        )

    [accept-encoding] => Array
        (
            [0] => gzip, deflate, sdch
        )

    [accept-language] => Array
        (
            [0] => en-US,en;q=0.8
        )

    [cookie] => Array
        (
            [0] => cookie
        )

)

how i can print all the values in laravel function the same i can do with this getallheaders()?

我如何打印 laravel 函数中的所有值,就像我可以用这个一样getallheaders()

回答by Shedokan

Laravel uses Symphony, which keeps all header values in sub arrays, so we can just map the array and get them out:

Laravel 使用 Symphony,它将所有标头值保存在子数组中,因此我们可以映射数组并将它们取出:

$get_first = function($x){
    return $x[0];
};
// Same as getallheaders(), just with lowercase keys
print_r(array_map($get_first, $request->headers->all()));

Note:All keys are lowercase

注意:所有键都是小写的

回答by BlueC

An alternative to @Shedokan's answer using Laravel collectionstransform()method instead of array_map:

使用 Laravel集合transform()方法代替@Shedokan 的答案的替代方法array_map

$headers = collect($request->header())->transform(function ($item) {
    return $item[0];
});

This way $headerswill be a collection so you can then use the toArray()method to convert back to an array. Since this is a collection it also has access to any of the other collection methods.

这种方式$headers将是一个集合,因此您可以使用该toArray()方法将其转换回数组。由于这是一个集合,它也可以访问任何其他集合方法。

回答by WILLIAM DAZA

You can user

您可以使用

$header = app('request')->header('header_name', 'default_header_value');

Can use this when $requestis not available

$request不可用时可以使用它