在 php 中获取请求的 url 的 Content-Type

Posted

技术标签:

【中文标题】在 php 中获取请求的 url 的 Content-Type【英文标题】:Get Content-Type of requested url in php 【发布时间】:2012-08-14 23:22:33 【问题描述】:

使用php我如何能够将变量$type定义为http://www.example.com的content-type

例如:$type定义为"text/html"

到目前为止,这是我正在使用的:

<?php
$url = 'http://www.example.com';
print_r(get_headers($url));
print_r(get_headers($url, 1));
?>

可以根据需要更改代码

【问题讨论】:

【参考方案1】:

不太清楚您要做什么,但如果您要获取浏览器发送到您的脚本的请求内容类型,您可以这样做:

<?php 
// Collect all headers
$headers = [];
foreach(getallheaders() as $name => $header)
    $headers[strtolower($name)] = $header;


// Get the content type header
$contentType = $headers['content-type'];
?>

【讨论】:

【参考方案2】:

有时 get_header 会返回错误的值,因为它读取的是 http 标头,而不是文件。 最好使用 finfo:

$finfo = new finfo(FILEINFO_MIME_TYPE);
$type = $finfo->buffer(file_get_contents($link));

【讨论】:

【参考方案3】:

你试过了吗:

$type = get_headers($url, 1)["Content-Type"];

正如@Michael 在 cmets 中所指出的,如果没有最新版本的 PHP,此语法将无法工作。

你也试过了吗:

$headers = get_headers($url, 1);
$type = $headers["Content-Type"];

?

【讨论】:

请注意,()[] 这个语法只在 PHP 5.4 中有效。早期版本要求您将数组保存到变量中,然后检索密钥。 我的 php 是 5.3.13,是第二个代码 sn-p 应该在 5.4 以下的版本上工作,因为我收到 Parse error: syntax error, unexpected T_VARIABLE 第二个 sn-p 在 PHP 5.4.36 上对我来说非常有用。 +1

以上是关于在 php 中获取请求的 url 的 Content-Type的主要内容,如果未能解决你的问题,请参考以下文章

php中请求url都有哪些方法

急!!php获取url参数

请问下 php 怎么获取 ajax 请求 来源页面的 完整 url 地址啊?

php获取URL参数

php 中发送get请求,后台无法获取

php请求url返回json数据的问题