©
This document uses PHP Chinese website manual Release
(PHP 5 >= 5.3.0, PECL fileinfo >= 0.1.0)
finfo_buffer -- finfo::buffer — 返回一个字符串缓冲区的信息
过程化风格
$finfo
, string $string
= NULL
[, int $options
= FILEINFO_NONE
[, resource $context
= NULL
]] )面向对象风格
$string
= NULL
[, int $options
= FILEINFO_NONE
[, resource $context
= NULL
]] )本函数用来获取字符串中二进制数据的信息。
finfo
finfo_open() 函数返回的 Fileinfo 资源。
string
要检查的文件内容。
options
一个 Fileinfo 常量 或多个 Fileinfo 常量 进行逻辑或运算。
context
返回 string
参数所指定内容的类型描述。
发生错误时返回 FALSE
。
Example #1 finfo_buffer() 函数例程
<?php
$finfo = new finfo ( FILEINFO_MIME );
echo $finfo -> buffer ( $_POST [ "script" ]) . "\n" ;
?>
以上例程的输出类似于:
application/x-sh; charset=us-ascii
[#1] nimasdj [AT] yahoo [DOT] com [2015-11-14 18:31:21]
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.
[#2] donjajo4all at gmail dot com [2014-06-11 06:42:49]
Get only a webpage content type and forget the charset
<?php
$file = new finfo(FILEINFO_MIME);
echo strstr($file->buffer(file_get_contents('http://example.com')),';',true)//Returns something similar to text/html
?>
[#3] donjajo4all at gmail dot com [2014-06-10 13:45:13]
Get only a webpage content type and forget the charset
<?php
$file = new finfo(FILEINFO_MIME);
echo strstr(file_get_contents('http://example.com'),';',true); //Returns something similar to text/html
?>
[#4] contact at ingnu dot fr [2011-06-20 14:22:04]
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).