Я думаю самое простое это определение по расширению файла, как его тогда получить, от $file_name регуляркой отрезать 3 символа и проверять по массиву с расширениями?
Может есть другой какой вариант?
ПС. Готовые скрипты из инета тянуть как-то нехочеться, фиг знает что там намешано, хочеться самому понять и попробывать.
Спустя 6 минут, 25 секунд (24.11.2010 - 13:43) Nikitian написал(а):
Проверка на изображение
/**
* Если файл является картинкой, то возвращается указатель на неё, иначе - false
* @param string $file Имя файла
* @return resuorce
* @author Nikitian
*/
function image_open($file) {
if (!file_exists($file)
)return false;
if (class_exists('Imagick')) {//Если есть, то работаем imagick'ом, т.к. он больше файлов понимает
$image = new Imagick();
$ret = $image->readImage($file);
$image->clear();
$image->destroy();
if ($ret === false
)return false;
return $file;
}
# JPEG:
$im = @imagecreatefromjpeg($file);
if ($im !== false) {
return $im;
}
# GIF:
$im = @imagecreatefromgif($file);
if ($im !== false) {
return $im;
}
# PNG:
$im = @imagecreatefrompng($file);
if ($im !== false) {
return $im;
}
/*
# GD File:
$im=@imagecreatefromgd($file);
if($im!==false){return $im;}
# GD2 File:
$im=@imagecreatefromgd2($file);
if($im!==false){return $im;}
# WBMP:
$im=@imagecreatefromwbmp($file);
if($im!==false){return $im;}
# XBM:
$im=@imagecreatefromxbm($file);
if($im!==false){return $im;}
# XPM:
$im=@imagecreatefromxpm($file);
if($im!==false){return $im;}
# Попытка открыть со строки:
$im=@imagecreatefromstring(file_get_contents($file));
if($im!==false){return $im;}
*/
return false;
}
Передаёте расположение файла. Если вернуло false, то это не картинка, если что-то другое, то картинка
Спустя 3 минуты, 10 секунд (24.11.2010 - 13:47) Renden написал(а):
Спасибо, попробую, только вопрос: Imagick - я как понимаю это типа GD тоесть его тоже нужно ставить?)
Спустя 1 минута, 40 секунд (24.11.2010 - 13:48) ДиммКа написал(а):
получаем расширение так
ну а дальше сравниваем полученно с массивом разрешенных расширений
preg_replace("/.*?\./", '', 'photo.jpg');
ну а дальше сравниваем полученно с массивом разрешенных расширений
Спустя 20 минут, 12 секунд (24.11.2010 - 14:08) Nikitian написал(а):
Цитата (Renden @ 24.11.2010 - 10:47) |
Спасибо, попробую, только вопрос: Imagick - я как понимаю это типа GD тоесть его тоже нужно ставить?) |
Да, это отдельное расширение, которое обычно не ставят. Функция на это рассчитана и работает и без мэджика, просто он больше форматов знает, поэтому приоритетнее им.
Спустя 4 часа, 4 минуты, 8 секунд (24.11.2010 - 18:13) PiratXXX написал(а):
ДиммКа
чет ты замудрил!
Для таких целей есть специальная функция: pathinfo() )))
чет ты замудрил!
Для таких целей есть специальная функция: pathinfo() )))
$PathParts = pathinfo($FileName);
/* Возвращает массив */
echo $PathParts['dirname'], "\n";
echo $PathParts['basename'], "\n";
echo $PathParts['extension'], "\n";
echo $PathParts['filename'], "\n"; // версия PHP 5.2.0