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 定数の組み合わせ。

context

戻り値

string のテキスト表現、あるいはエラーが発生した場合に false を返します。

変更履歴

バージョン 説明
8.1.0 引数 finfo は、finfo クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、リソース を期待していました。
8.0.0 context は、nullable になりました。

例1 finfo_buffer() の例

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

上の例の出力は、 たとえば以下のようになります。

application/x-sh; charset=us-ascii

参考

add a note

User Contributed Notes 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