2010-10-12 6 views
0

Мне было интересно, есть ли способ узнать, является ли данная строка изображением, например.PHP получить тип контента

$a = 'php';// output false 
$b = 'jpg';// output true 
$c = 'js'; // output false 
$d = 'png';// output : true 

Я знаю, что это может быть сделано путем проверки его от массива, но я просто интересно, если есть лучшее решение.

+3

Вы смешиваете здесь несколько вещей. В вашем заголовке вы говорите о «типе контента», но контента нет. Затем вы хотите узнать, является ли данная строка изображением (что возможно), но затем вы переходите к расширениям файлов :) Можете ли вы прояснить, что у вас есть, и что вы хотите узнать? –

+0

Возможно, тип mime был лучшим описанием, я просто пытался описать его как можно лучше. – Val

ответ

3

Я нашел это: http://www.php.net/manual/en/function.finfo-file.php.

<?php 
$finfo = finfo_open(FILEINFO_MIME_TYPE); // return mime type ala mimetype extension 
foreach (glob("*") as $filename) { 
    if substr(finfo_file($finfo, $filename), 0, 6) == "image" 
     printf("%s is an image file.", $filename); 
} 
finfo_close($finfo); 
?> 

Также, как говорится в комментарии Пекки, вы смешиваете свой заголовок и свой вопрос. Если вы хотите узнать тип содержимого конкретного файла, вы можете использовать предоставленный фрагмент кода.

В противном случае это просто похоже на то, что вы хотите увидеть, является ли расширение для файла показателем того, что оно является образом. Тогда вы просто хотите проверить существование строки в массиве предопределенных расширений:

<?php 

$imageExtensions = array('jpg', 'gif', 'png', ....); 
$someFileExtension = 'jpg'; 

if in_array($someFileExtension, $imageExtensions) 
    printf("%s is an extension indicative of an image file.", $someFileExtension); 

?> 
+0

Истина заключается в том, что любой из них будет работать ... Я знал о втором варианте ..., который заключается в том, что я должен идти для этого, поскольку это может быть быстрее, чем опция «finfo» (которая должна быть установлена ​​как расширение php) , – Val

+1

@Val Чтобы идентифицировать тип файла из пользовательской загрузки, вы должны _всегда проверить тип mime. Проверка расширения файла в этом случае является проблемой безопасности и ненадежностью. – MrWhite

Смежные вопросы