(PHP 5 >= 5.3.0, PHP 7, PHP 8, PECL fileinfo >= 0.1.0)
finfo_buffer -- finfo::buffer — Devuelve información acerca de un string de buffer
Estilo procedimental
$finfo,$string,$flags = FILEINFO_NONE ,$context = null Estilo orientado a objetos
$string, int $flags = FILEINFO_NONE , ? resource $context = null ): string |false Esta función se utiliza para obtener información acerca de datos binarios en un string.
finfoUna instancia finfo , retornada por finfo_open() .
stringContenido de un fichero a ser verificado.
flagsUna o una unión de varias constantes Fileinfo.
context
Devuelve una descripción textual del argumento
string o false si ha ocurrido un error.
| Versión | Descripción |
|---|---|
| 8.5.0 |
El parámetro context ha quedado obsoleto
puesto que es ignorado.
|
| 8.1.0 |
El parámetro finfo ahora espera una instancia de finfo
; anteriormente, una resource era esperado.
|
| 8.0.0 |
context ahora es nullable.
|
Ejemplo #1 Ejemplo con finfo_buffer()
<?php
$finfo = new finfo(FILEINFO_MIME);
echo $finfo->buffer($_POST["script"]) . "\n";
?>Resultado del ejemplo anterior es similar a:
application/x-sh; charset=us-ascii
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.