ファイルのマジックバイト判定
マジックバイト(マジックナンバー/フォーマット識別子)の一覧
PHP
$file_name = 'foo.png';
// 先頭から10バイト分抽出
// ‰PNG
$section = file_get_contents($file_name, NULL, NULL, 0, 10);
// 89 50 4e 47 0d 0a 1a 0a 00 00
$hex = implode(' ', str_split(bin2hex($section), '2'));
/*
バイナリ 10バイト分例
bmp : BM< (42 4d 3c 00 00 00 00 00 00 00)
exe : MZ (4d 5a 90 00 03 00 00 00 04 00)
gif : GIF89a (47 49 46 38 39 61 01 00 01 00)
jpg : ÿØÿàJFIF (ff d8 ff e0 00 10 4a 46 49 46)
pdf : %PDF-1.5 % (25 50 44 46 2d 31 2e 35 0d 25)
png : ‰PNG (89 50 4e 47 0d 0a 1a 0a 00 00)
psd : 8BPS (38 42 50 53 00 01 00 00 00 00)
tif : II* (49 49 2a 00 08 00 00 00 15 00)
zip : PK (50 4b 03 04 0a 00 00 00 00 00)
docx : PK (50 4b 03 04 14 00 06 00 08 00)
xlsx : PK (50 4b 03 04 14 00 06 00 08 00)
pptx : PK (50 4b 03 04 14 00 06 00 08 00)
doc : ��ࡱ� (d0 cf 11 e0 a1 b1 1a e1 00 00)
xls : ��ࡱ� (d0 cf 11 e0 a1 b1 1a e1 00 00)
pptx : ��ࡱ� (d0 cf 11 e0 a1 b1 1a e1 00 00)
*/
/*
テキスト(1行目に foo 2行目に bar 3行目に baz)
csv : foo\nbar\n (66 6f 6f 0d 0a 62 61 72 0d 0a)
txt : foo\nbar\n (66 6f 6f 0d 0a 62 61 72 0d 0a)
*/
ファイル | マジックバイト | |
---|---|---|
bmp | BM | 42 4d |
exe | MZ | 4d 5a |
gif | GIF8 | 47 49 46 38 |
jpg | ÿØÿà | ff d8 |
%PDF- | 25 50 44 46 2d | |
png | ‰PNG | 89 50 4e 47 |
psd | 8BPS | 38 42 50 53 |
tif | II | 49 49 |
zip | PK | 50 4b |
docx,xlsx,pptx | PK | 50 4b |
doc,xls,ppt | d0 cf 11 e0 a1 b1 1a e1 |