У вас є два варіанти, прості і попередньо побудовані з деякими недоліками, інша складна і вимагає математики.
PHP's fileinfo can be used to detect file types based on the file's actual header information. For instance, I just grabbed your gravitar:

Але фактичний код такий:
‰PNG
IHDR szzô
IDATX…—OL\UÆZÀhëT)¡ c•1T:1‘Š‘.Ú(]4†A“ÒEY˜à.................................
Отже, навіть без імені файлу я міг це виявити досить очевидно. Ось що буде робити розширення PHP Fileinfo. Більшість файлів PNG та JPG, як правило, мають в них цей заголовок, але це не так для кожного типу файлів.
Як кажуть, файлова інформація мертва проста у використанні, з інструкції:
$fi = new finfo(FILEINFO_MIME,'/usr/share/file/magic');
$mime_type = $fi->buffer(file_get_contents($file));
Ваш інший варіант складніший і залежить від ваших особистих амбіцій, ви можете створити гістограму та файли профілю на основі їх вмісту .
Щось подібне виглядає як файл GIF:

І щось на зразок виглядає як файл TIFF:

Звідси ви повинні створити модель для декількох типів файлів для того, що повинна бути гістограма кожного типу, а потім використати її, щоб вгадати. Це хороший спосіб використовувати для файлів, які насправді не мають тих "магічних заголовків", які можна легко прочитати. Майте на увазі, вам потрібно буде вивчити математику та як моделювати середню функцію гістограми та збігати їх з файлами.