用法:

<?php

$filefullpath="F:/test/2awd45wr1e5fef5e5";
echo Format::check($filefullpath,['png','jpg','gif']);

格式检查类:

  1 <?php
2 /**
3 * lib_format.php
4 * $Author: YunGaZeon $
5 * $Blog: http://www.cnblogs.com/GaZeon/ $
6 * $Id: lib_collection.php Date:2017-8-14 YunGaZeon $
7 */
8
9 class Format
10 {
11 public static function check($data,$formats=[])
12 {
13 $_fc=new FormatChecker;
14
15 return $_fc->check($data,$formats);
16 }
17 }
18
19 class FormatChecker
20 {
21 private $_format=[
22 'jp2' => '0000000C6A502020',
23 '3gp' => '0000002066747970',
24 '3gp5' => '0000001866747970',
25 'm4a' => '00000020667479704D3441',
26 'ico' => '00000100',
27 'spl' => '00000100',
28 'vob' => '000001BA',
29 'cur' => '00000200',
30 'wb2' => '00000200',
31 'wk1' => '0000020006040600',
32 'wk3' => '00001A0000100400',
33 'wk4' => '00001A0002100400',
34 'wk5' => '00001A0002100400',
35 '123' => '00001A00051004',
36 'qxd' => '00004D4D585052',
37 'mdf' => '010F0000',
38 'tr1' => '0110',
39 'rgb' => '01DA01010003',
40 'drw' => '07',
41 'dss' => '02647373',
42 'dat' => 'A90D000000000000',
43 'db3' => '03',
44 'qph' => '03000000',
45 'adx' => '80000020031204',
46 'db4' => '04',
47 'n' => 'FFFE0000',
48 'a' => 'FFFE0000',
49 'skf' => '07534B46',
50 'dtd' => '0764743264647464',
51 'db' => 'D0CF11E0A1B11AE1',
52 'pcx' => '0A050101',
53 'mp' => '0CED',
54 'doc' => 'D0CF11E0A1B11AE1',
55 'nri' => '0E4E65726F49534F',
56 'wks' => 'FF00020004040554',
57 'pf' => '1100000053434341',
58 'ntf' => '4E49544630',
59 'nsf' => '4E45534D1A01',
60 'arc' => '41724301',
61 'pak' => '5041434B',
62 'eth' => '1A350100',
63 'mkv' => '1A45DFA393428288',
64 'ws' => '1D7D',
65 'gz' => '1F8B08',
66 'tar.z' => '1FA0',
67 'ain' => '2112',
68 'lib' => '213C617263683E0A',
69 'msi' => 'D0CF11E0A1B11AE1',
70 'vmdk' => '4B444D',
71 'dsp' => '23204D6963726F73',
72 'amr' => '2321414D52',
73 'hdr' => '49536328',
74 'sav' => '24464C3240282329',
75 'eps' => 'C5D0D3C6',
76 'pdf' => '25504446',
77 'fdf' => '25504446',
78 'hqx' => '2854686973206669',
79 'log' => '2A2A2A2020496E73',
80 'ivr' => '2E524543',
81 'rm' => '2E524D46',
82 'rmvb' => '2E524D46',
83 'ra' => '2E7261FD00',
84 'au' => '646E732E',
85 'cat' => '30',
86 'evt' => '300000004C664C65',
87 'asf' => '3026B2758E66CF11',
88 'wma' => '3026B2758E66CF11',
89 'wmv' => '3026B2758E66CF11',
90 'wri' => 'BE000000AB',
91 '7z' => '377ABCAF271C',
92 'psd' => '38425053',
93 'sle' => '414376',
94 'asx' => '3C',
95 'xdr' => '3C',
96 'dci' => '3C21646F63747970',
97 'manifest' => '3C3F786D6C2076657273696F6E3D',
98 'xml' => '3C3F786D6C2076657273696F6E3D22312E30223F3E',
99 'msc' => 'D0CF11E0A1B11AE1',
100 'fm' => '3C4D616B65724669',
101 'mif' => '56657273696F6E20',
102 'gid' => '4C4E0200',
103 'hlp' => '4C4E0200',
104 'dwg' => '41433130',
105 'syw' => '414D594F',
106 'abi' => '414F4C494E444558',
107 'aby' => '414F4C4442',
108 'bag' => '414F4C2046656564',
109 'idx' => '5000000020000000',
110 'ind' => '414F4C494458',
111 'pfc' => '414F4C564D313030',
112 'org' => '414F4C564D313030',
113 'vcf' => '424547494E3A5643',
114 'bin' => '424C4932323351',
115 'bmp' => '424D',
116 'dib' => '424D',
117 'prc' => '424F4F4B4D4F4249',
118 'bz2' => '425A68',
119 'tar.bz2' => '425A68',
120 'tbz2' => '425A68',
121 'tb2' => '425A68',
122 'rtd' => '43232B44A4434DA5',
123 'cbd' => '434246494C45',
124 'iso' => '4344303031',
125 'clb' => '434F4D2B',
126 'cpt' => '43505446494C45',
127 'cru' => '43525553482076',
128 'swf' => '465753',
129 'ctf' => '436174616C6F6720',
130 'dms' => '444D5321',
131 'adf' => '5245564E554D3A2C',
132 'dvr' => '445644',
133 'ifo' => '445644',
134 'cdr' => '52494646',
135 'vcd' => '454E545259564344',
136 'e01' => '4C5646090D0AFF00',
137 'evtx' => '456C6646696C6500',
138 'qbb' => '458600000600',
139 'cpe' => '464158434F564552',
140 'flv' => '464C56',
141 'aiff' => '464F524D00',
142 'eml' => '582D',
143 'gif' => '47494638',
144 'pat' => '47504154',
145 'gx2' => '475832',
146 'sh3' => '4848474231',
147 'tif' => '4D4D002B',
148 'tiff' => '4D4D002B',
149 'mp3' => '494433',
150 'koz' => '49443303000000',
151 'crw' => '49491A0000004845',
152 'cab' => '4D534346',
153 'lit' => '49544F4C49544C53',
154 'chi' => '49545346',
155 'chm' => '49545346',
156 'jar' => '5F27A889',
157 'jg' => '4A47040E000000',
158 'kgb' => '4B47425F61726368',
159 'shd' => '68490000',
160 'lnk' => '4C00000001140200',
161 'obj' => '80',
162 'pdb' => 'ACED000573720012',
163 'mar' => '4D41723000',
164 'dmp' => '504147454455',
165 'hdmp' => '4D444D5093A7',
166 'mls' => '4D563243',
167 'mmf' => '4D4D4D440000',
168 'nvram' => '4D52564E',
169 'ppz' => '4D534346',
170 'snp' => '4D534346',
171 'tlb' => '4D53465402000100',
172 'dvf' => '4D535F564F494345',
173 'msv' => '4D535F564F494345',
174 'mid' => '4D546864',
175 'midi' => '4D546864',
176 'dsn' => '4D56',
177 'com' => 'EB',
178 'dll' => '4D5A',
179 'drv' => '4D5A',
180 'exe' => '4D5A',
181 'pif' => '4D5A',
182 'qts' => '4D5A',
183 'qtx' => '4D5A',
184 'sys' => 'FFFFFFFF',
185 'acm' => '4D5A',
186 'ax' => '4D5A900003000000',
187 'cpl' => 'DCDC',
188 'fon' => '4D5A',
189 'ocx' => '4D5A',
190 'olb' => '4D5A',
191 'scr' => '4D5A',
192 'vbx' => '4D5A',
193 'vxd' => '4D5A',
194 '386' => '4D5A',
195 'api' => '4D5A900003000000',
196 'flt' => '76323030332E3130',
197 'zap' => '4D5A90000300000004000000FFFF',
198 'sln' => '4D6963726F736F66742056697375616C',
199 'jnt' => '4E422A00',
200 'jtp' => '4E422A00',
201 'cod' => '4E616D653A20',
202 'dbf' => '4F504C4461746162',
203 'oga' => '4F67675300020000',
204 'ogg' => '4F67675300020000',
205 'ogv' => '4F67675300020000',
206 'ogx' => '4F67675300020000',
207 'dw4' => '4F7B',
208 'pgm' => '50350A',
209 'pax' => '504158',
210 'pgd' => '504750644D41494E',
211 'img' => 'EB3C902A',
212 'zip' => '504B0304140000',
213 'docx' => '504B030414000600',
214 'pptx' => '504B030414000600',
215 'xlsx' => '504B030414000600',
216 'kwd' => '504B0304',
217 'odt' => '504B0304',
218 'odp' => '504B0304',
219 'ott' => '504B0304',
220 'sxc' => '504B0304',
221 'sxd' => '504B0304',
222 'sxi' => '504B0304',
223 'sxw' => '504B0304',
224 'wmz' => '504B0304',
225 'xpi' => '504B0304',
226 'xps' => '504B0304',
227 'xpt' => '5850434F4D0A5479',
228 'grp' => '504D4343',
229 'qemu' => '514649',
230 'abd' => '5157205665722E20',
231 'qsd' => '5157205665722E20',
232 'reg' => 'FFFE',
233 'sud' => '52454745444954',
234 'ani' => '52494646',
235 'cmx' => '52494646',
236 'ds4' => '52494646',
237 '4xm' => '52494646',
238 'avi' => '52494646',
239 'cda' => '52494646',
240 'qcp' => '52494646',
241 'rmi' => '52494646',
242 'wav' => '52494646',
243 'cap' => '58435000',
244 'rar' => '526172211A0700',
245 'ast' => '5343486C',
246 'shw' => '53484F57',
247 'cpi' => 'FF464F4E54',
248 'sit' => '5374756666497420',
249 'sdr' => '534D415254445257',
250 'cnv' => '53514C4F434F4E56',
251 'cal' => 'B5A2B0B3B3B0A5B5',
252 'info' => 'E310000100000000',
253 'uce' => '55434558',
254 'ufa' => '554641C6D2C1',
255 'pch' => '564350434830',
256 'ctl' => '56455253494F4E20',
257 'ws2' => '575332303030',
258 'lwp' => '576F726450726F',
259 'bdr' => '5854',
260 'zoo' => '5A4F4F20',
261 'ecf' => '5B47656E6572616C',
262 'vcw' => '5B4D535643',
263 'dun' => '5B50686F6E655D',
264 'sam' => '5B7665725D',
265 'cpx' => '5B57696E646F7773',
266 'cfg' => '5B666C7473696D2E',
267 'cas' => '5F434153455F',
268 'cbk' => '5F434153455F',
269 'arj' => '60EA',
270 'vhd' => '636F6E6563746978',
271 'csh' => '6375736800000002',
272 'p10' => '64000000',
273 'dex' => '6465780A30303900',
274 'dsw' => '64737766696C65',
275 'flac' => '664C614300000022',
276 'dbb' => '6C33336C',
277 'acd' => '72696666',
278 'ram' => '727473703A2F2F',
279 'dmg' => '78',
280 'lgc' => '7B0D0A6F20',
281 'lgd' => '7B0D0A6F20',
282 'pwi' => '7B5C707769',
283 'rtf' => '7B5C72746631',
284 'psp' => '7E424B00',
285 'wab' => '9CCBCB8D1375D211',
286 'wpf' => '81CDAB',
287 'png' => '89504E470D0A1A0A',
288 'aw' => '8A0109000000E108',
289 'hap' => '91334846',
290 'skr' => '9501',
291 'gpg' => '99',
292 'pkr' => '9901',
293 'qdf' => 'AC9EBD8F0000',
294 'pwl' => 'E3828596',
295 'dcx' => 'B168DE3A',
296 'tib' => 'B46E6844',
297 'acs' => 'C3ABCDAB',
298 'lbk' => 'C8007900',
299 'class' => 'CAFEBABE',
300 'dbx' => 'CFAD12FE',
301 'dot' => 'D0CF11E0A1B11AE1',
302 'pps' => 'D0CF11E0A1B11AE1',
303 'ppt' => 'D0CF11E0A1B11AE1',
304 'xla' => 'D0CF11E0A1B11AE1',
305 'xls' => 'D0CF11E0A1B11AE1',
306 'wiz' => 'D0CF11E0A1B11AE1',
307 'ac_' => 'D0CF11E0A1B11AE1',
308 'adp' => 'D0CF11E0A1B11AE1',
309 'apr' => 'D0CF11E0A1B11AE1',
310 'mtw' => 'D0CF11E0A1B11AE1',
311 'opt' => 'D0CF11E0A1B11AE1',
312 'pub' => 'D0CF11E0A1B11AE1',
313 'rvt' => 'D0CF11E0A1B11AE1',
314 'sou' => 'D0CF11E0A1B11AE1',
315 'spo' => 'D0CF11E0A1B11AE1',
316 'vsd' => 'D0CF11E0A1B11AE1',
317 'wps' => 'D0CF11E0A1B11AE1',
318 'ftr' => 'D20A0000',
319 'arl' => 'D42A',
320 'aut' => 'D42A',
321 'wmf' => 'D7CDC69A',
322 'efx' => 'DCFE',
323 'one' => 'E4525C7B8CD8A74D',
324 'rpm' => 'EDABEEDB',
325 'gho' => 'FEEF',
326 'ghs' => 'FEEF',
327 'wp' => 'FF575043',
328 'wpd' => 'FF575043',
329 'wpg' => 'FF575043',
330 'wpp' => 'FF575043',
331 'wp5' => 'FF575043',
332 'wp6' => 'FF575043',
333 'jfif' => 'FFD8FF',
334 'jpe' => 'FFD8FF',
335 'jpeg' => 'FFD8FF',
336 'jpg' => 'FFD8FF',
337 'mof' => 'FFFE23006C006900',
338 'ipa' => '504B03040A'
339 ];
340
341
342 private $_allow_format=[];
343
344 /*设置允许通过的格式*/
345 public function allow($allow_format=[])
346 {
347 if(!empty($allow_format))
348 $this->_allow_format=$allow_format;
349 }
350
351 /*根据长度读取文件二进制内容*/
352 public function readHead($filepath,$size)
353 {
354 $fh=fopen($filepath,'rb');
355 $bin=fread($fh,$size);
356 fclose($fh);
357 return $bin;
358 }
359
360 /*检查格式*/
361 public function check($filepath,$allow_format=[])
362 {
363 $_allow_format=empty($allow_format)?$this->_allow_format:$allow_format;
364 if(empty($filepath))
365 return false;
366
367 if(!empty($_allow_format))
368 {
369 foreach($_allow_format as $fm)
370 {
371 if(!isset($this->_format[$fm]))
372 continue;
373 $len=strlen($this->_format[$fm]);
374 $binHead=$this->readHead($filepath,$len);
375 $fileHead=unpack('H'.$len,$binHead);
376
377 if(strtoupper($fileHead[1])==$this->_format[$fm])
378 return $fm;
379 }
380 }
381 else
382 {
383 foreach($this->_format as $fm=>$fbinhead)
384 {
385 $len=strlen($fbinhead);
386 $binHead=$this->readHead($filepath,$len);
387 $fileHead=unpack('H'.$len,$binHead);
388 if(strtoupper($fileHead[1])==$fbinhead)
389 return $fm;
390 }
391 }
392 return false;
393 }
394 }

更多相关文章

  1. 如何将项添加到json文件格式化数组
  2. 将STR_TO_DATE格式化为日期
  3. Laravel 5验证日期为php Y格式。g 2015 ?
  4. 以完整二叉树,数组格式获取所有节点
  5. php执行数据库查询返回json格式数据
  6. 当excel表格单元格的格式是日期格式非文本格式的时候,phpexcel 应
  7. PHP格式化日期,显示“刚刚,几分钟前,几小时前,几天前,几个月前”
  8. mysql值以数组格式转换为PHP数组
  9. 格式化mysql表引入Attendace表格格式

随机推荐

  1. 克隆文本并插入壁橱标题范围
  2. 用jQuery编写网页-表单检查
  3. 我在解析JSON时出错了
  4. Jquery---定时器(实现页面内定时弹出广告,
  5. jquery datatables-一个数据表中的最大列
  6. jQuery 点击div, 向上展示内容
  7. 拒绝拖放到tabel的第一个子单元格
  8. 使用JQuery显示和隐藏不同div的onClick事
  9. IE 10和11中的灰度?
  10. 如何让代码等待好/取消按钮选择?