finfo_buffer

finfo::buffer

(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)

finfo_buffer -- finfo::buffer返回有关字符串缓冲区的信息

描述

过程式风格

finfo_buffer(
    finfo $finfo,
    string $string,
    int $flags = FILEINFO_NONE,
    ?resource $context = null
): string|false

面向对象风格

public finfo::buffer(string $string, int $flags = FILEINFO_NONE, ?resource $context = null): string|false

此函数用于获取有关字符串中二进制数据的信息。

参数

finfo

一个 finfo 实例,由 finfo_open() 返回。

string

要检查的文件内容。

flags

一个或多个 Fileinfo 常量 的析取。

context

返回值

返回 string 参数的文本描述,如果发生错误则返回 false

变更日志

版本 描述
8.1.0 finfo 参数现在期望一个 finfo 实例;以前,期望的是一个 资源
8.0.0 context 现在是可空的。

示例

示例 #1 一个 finfo_buffer() 示例

<?php
$finfo
= new finfo(FILEINFO_MIME);
echo
$finfo->buffer($_POST["script"]) . "\n";
?>

上面的示例将输出类似于以下内容

application/x-sh; charset=us-ascii

参见

添加备注

用户贡献的备注 4 则备注

contact at ingnu dot fr
13 年前
您可以使用以下代码轻松检查互联网资源的 MIME 类型

<?php
function getUrlMimeType($url) {
$buffer = file_get_contents($url);
$finfo = new finfo(FILEINFO_MIME_TYPE);
return
$finfo->buffer($buffer);
}
?>

我用它来检测用户提供的 URL 是 HTML 页面(因此我使用 HTML 做了一些操作)还是互联网上的文件(因此我根据 MIME 类型显示相应的图标)。
nimasdj [AT] yahoo [DOT] com
8 年前
您绝不应该依赖 finfo::buffer 来获取文件的 MimeType,您必须始终物理保存或临时保存文件,并使用 finfo_open 来获取 MimeType。 我用 Excel 文件测试过,使用 buffer 它显示的是 octet-stream,这是无效的,使用 finfo_open 它显示的是 ms-excell,这是正确的。
donjajo4all at gmail dot com
10 年前
仅获取网页内容类型,并忽略字符集

<?php
$file
= new finfo(FILEINFO_MIME);
echo
strstr($file->buffer(file_get_contents('http://example.com')),';',true)//返回类似于 text/html 的内容
?>
donjajo4all at gmail dot com
10 年前
仅获取网页内容类型,并忽略字符集

<?php
$file
= new finfo(FILEINFO_MIME);
echo
strstr(file_get_contents('http://example.com'),';',true); //返回类似于 text/html 的内容
?>
To Top