php - PHP - 使用十六进制字符串解压模块
问题描述
我基本上想要实现的是:
- 将上传的文件(图像、exe 等)读取为二进制数据
- 将其转换为十六进制字符串
- 检查它是否包含字符串
我已经修补并设法编写了一个执行上述操作的代码,但是,我目前的问题如下:
字符串“needle”转换为十六进制的“6e6565646c65”;如果字母大写(区分大小写),则在文件中不匹配。例如,它不会与“Needle”或“needlE”匹配。
那么,如何在不区分大小写的情况下检查文件中是否存在字符串?我尝试不将文件更改为十六进制字符串并检查原始数据,但不幸的是,我无法让它工作。
这是我现在拥有的代码:
$hex = unpack("H*", file_get_contents($filetmp));
$hex = current($hex);
if (strpos(strtolower($hex), '6e6565646c65'){
//string "needle" matches in the file
}
关于使用 PHP 可以做什么的任何想法?这可能是一种完全不同的方法,我不介意,我会研究它。
解决方案
您可以尝试根据小写文件数据检查针:
$hex = unpack("H*", strtolower(file_get_contents($filetmp)));
$hex = current($hex);
if (strpos($hex, '6e6565646c65' !== false) {
//found
}
此外,如果在开头找到as ,则检查false
asstrpos
将返回 false 。0
推荐阅读
- git - git新手,为什么我在开发分支上看到我的更改,即使我将它们放在功能分支上?
- javascript - 类(模块)未导出
- salesforce - 基于时间的工作流程操作未执行
- angular - 未捕获(承诺):错误:无法匹配任何路由。URL 段:'detail/version2/Tom%20Restaurant
- angular - mat-input 在 mat-table Angular 8 中无法正常工作
- php - 在另一个表中删除和插入新数据后更新一个表
- java - 如何从文件中获取密钥的第一个值?
- javascript - 无限动画之间的延迟
- android - Android Studio:我可以使用 android 的 DeviceControlActivity.java 类还是它已经太旧了?我可以使用其他 BLE 类吗?
- httprequest - 如何获取非 Spring Boot 应用程序的 http_request 指标