PHP Conference Nagoya 2025

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_open() 返回的 finfo 实例。

string

要检查的文件内容。

flags

一个 Fileinfo 常量 或多个 Fileinfo 常量 进行逻辑或运算。

context

返回值

返回 string 参数所指定内容的类型描述。 发生错误时返回 false

更新日志

版本 说明
8.1.0 finfo 参数现在接受 finfo 实例,之前接受 resource
8.0.0 context 现在可以为 null。

示例

示例 #1 finfo_buffer() 示例

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

以上示例的输出类似于:

application/x-sh; charset=us-ascii

参见

添加备注

用户贡献的备注 2 notes

up
22
contact at ingnu dot fr
13 years ago
You can easily check mime type of an internet resource using this code :

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

I'm using it to detect if an url given by a user is a HTML page (so I do some stuff with the HTML) or a file on Internet (so I show an icon accordingly to the mime type).
up
8
nimasdj [AT] yahoo [DOT] com
9 years ago
You should never rely on finfo::buffer to get the MimeType of a file, you must always save the file physically or temporariliy and use finfo_open to get MimeType. I tested it with an excell file, with buffer it says octet-stream that is not valid, with finfo_open it says ms-excell as correct.
To Top