根据文件头进制特征识别文件类型,识别为图片进行OCR识别,懂得都懂,禁止用于违法行为。
<?php // 16进制特征码 $checkMap = [ ".jpeg" => hex2bin("FFD8FF"), ".png" => hex2bin("89504E47"), ".gif" => hex2bin("47494638"), ".tif" => hex2bin("49492A00"), ".bmp" => hex2bin("424D") ]; // 传递微信加密文件 $file = './be27b0c8911ffd7294b7febc16a9cb91_t.dat'; if (!file_exists($file)) { throw new Exception('文件' . $file . '不存在'); } // 读取文件内容 $content = file_get_contents($file); if (!$content) { throw new Exception('未获取到文件内容'); } // 读取文件前10个字节内容作为特征码 $bytesToRead = 10; $feature = substr($content, 0, 10); if (!$feature || strlen($feature) != 10) { throw new Exception('未获取到文件特征码'); } // 检查特征 $feature_array = str_split($feature, 1); $fileRes = checkImage($feature_array); if (empty($fileRes['0'])) { throw new Exception('不支持的文件类型'); } // 生成新的文件 $newFile = 'test' . $fileRes['0']; // 将文件内容转换 $newChar = ''; for ($i = 0; $i < strlen($content); $i++) { $newChar .= $content[$i] ^ $fileRes['1']; } file_put_contents($newFile, $newChar); // 检查特征 function checkImage($in_feature) { global $checkMap; foreach ($checkMap as $key => $check_feature) { $isConform = checkConformRule($check_feature, $in_feature); if ($isConform) { return [$key, $isConform]; } } return [null, null]; } // 检查规则 function checkConformRule($check_feature, $in_feature) { $initDecodeByte = $check_feature[0] ^ $in_feature[0]; for ($i = 0; $i < strlen($check_feature); $i++) { $b = $check_feature[$i] ^ $in_feature[$i]; if ($b !== $initDecodeByte) { return false; } } return $initDecodeByte; }
//$ak开发密钥,$cityname城市名称(支持省县乡详细地址) public function getposition($ak,$cityname){ $callback=array('lng'=>0,'l...
在使用ftok生成ipc进程通信key尝试将第二个参数项目标识符传入字符串报错:PHP Warning: ftok(): Project identifier is invalid,查阅资料发现第二个字符串只能是1个字符串,长度为1....
最近在编写windows php多线程的东西,从官网下载了PHP的线程安全版,尝试开启curl扩展extension=php_curl.dllphp -m 却提示 PHP Startup: Unable to load dynamic library 'C:\php\ext\php_curl...
有时候我们需要爬一个接口,但是这个接口需要很多参数,包括header和cookie要去编写,使用php curl模拟实在太慢。我们可以通过浏览器的network来复制请求为curl命令。例如我需要模拟请求接口地址:https://www.xkmz.cc/Ajax/Debug/delly,我们只需要在...
当我们使用php爬虫采集网站时经常会遇到内容使用ajax异步加载。一般采取的方案是PHP模拟再请求api接口获取数据,但是有时候前端js加密非常麻烦,我们需要将js的加密方法转换为php方法方便curl请求。当然通过了解我们可以通过3种方案解决。第一种:使用phpv8js扩展执行js代码。(pecl...
(1).今天遇到一件奇怪的事情,在event事件中是无法自定义异常处理,例如我们使用set_exception_handler来统一处理异常。例如下面的代码:<?php error_reporting(E_ALL); set_error_handler(function ($errn...