PHP 8.4.22 Released!

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

戻り値

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

変更履歴

バージョン 説明
8.5.0 context パラメータは、無視されるため非推奨になりました。
8.1.0 引数 finfo は、finfo クラスのインスタンスを期待するようになりました。 これより前のバージョンでは、resource を期待していました。
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
14 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