finfo_buffer

finfo::buffer

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

finfo_buffer -- finfo::buffer — 返回一个字符串缓冲区的信息

说明

过程化风格

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

面向对象风格

public function 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
15 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
10 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