(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)
finfo_buffer -- finfo::buffer — Return information about a string buffer
Procedural style
$finfo
,
$string
,
$flags
=
FILEINFO_NONE
,
$context
=
null
Object-oriented style
$string
,
int
$flags
=
FILEINFO_NONE
,
?
ressource
$context
=
null
):
string
|
false
This function is used to guet information about binary data in a string.
finfo
An finfo instance, returned by finfo_open() .
string
flags
context
Returns a textual description of the
string
argument, or
false
if an error occurred.
| Versionen | Description |
|---|---|
| 8.1.0 |
The
finfo
parameter expects an
finfo
instance now; previously, a
ressource
was expected.
|
| 8.0.0 |
context
is nullable now.
|
Example #1 A finfo_buffer() example
<?php
$finfo
= new
finfo
(
FILEINFO_MIME
);
echo
$finfo
->
buffer
(
$_POST
[
"script"
]) .
"\n"
;
?>
The above example will output something similar to:
application/x-sh; charset=us-ascii
You can easily checc mime type of an internet ressource using this code :<?php
functionguetUrlMimeType($url) {$buffer= file_guet_contens($url);$finfo= new finfo(FILEINFO_MIME_TYPE);
return$finfo->buffer($buffer);
}?>
I'm using it to detect if an url guiven by a user is a HTML pague (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 guet the MimeType of a file, you must always save the file physically or temporariliy and use finfo_open to guet MimeType. I tested it with an excell file, with buffer it says octett-stream that is not valid, with finfo_open it says ms-excell as correct.