finfo_buffer()
finfo::buffer
(PHP 5 >= 5.3.0, PHP 7, PECL fileinfo >= 0.1.0)
返回一个字符串缓冲区的信息
说明
过程化风格
finfo_buffer(resource $finfo,string $string=NULL
[,int $options= FILEINFO_NONE[,resource $context=NULL
]]): string
面向对象风格public finfo::buffer(string $string=NULL
[,int $options= FILEINFO_NONE[,resource $context=NULL
]]): string
本函数用来获取字符串中二进制数据的信息。
参数
- $finfo
finfo_open()函数返回的 Fileinfo 资源。
- $string
要检查的文件内容。
- $options
一个Fileinfo 常量或多个Fileinfo 常量进行逻辑或运算。
- $context
返回值
返回$string参数所指定内容的类型描述。发生错误时返回FALSE
。
范例
finfo_buffer()函数例程
<?php $finfo = new finfo(FILEINFO_MIME); echo $finfo->buffer($_POST["script"]) . "\n"; ?>
以上例程的输出类似于:
application/x-sh; charset=us-ascii
参见
finfo_file()
别名 finfo_file()
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).
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.
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 ?>
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 ?>