CodeBasePHP检查未知媒体文件的格式
Posted YunGaZeon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeBasePHP检查未知媒体文件的格式相关的知识,希望对你有一定的参考价值。
用法:
<?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 }
以上是关于CodeBasePHP检查未知媒体文件的格式的主要内容,如果未能解决你的问题,请参考以下文章