2011-08-08 50 views
2

我正在创建一个脚本,它将从输入文件(现在我正在处理jpg)中查找文件。停止PHP STRPOS函数忽略零

我使用通用文件头/尾部/结构来查找需要提取的数据。我使用STRPOS来找到这些共同点,找到需要从其余数据中拷贝的文件部分等。等等。

不管怎样,我遇到一个问题,STRPOS应该是查找字符串,“FFD9”......但是它发现它位置不正确!

例如,我的十六进制在我的JPG文件看起来是这样的,

Wrong String!

见FF和D9上零的每一面? STRPOS似乎忽略了中间的00!我需要停止脚本才能正常工作。

任何想法或建议?非常感谢你!

+0

你能发表一些代码吗? – nobody

+0

当然可以! - http://stackoverflow.com/questions/6740268/test-php-carve-for-jpg-files – Shawn

回答

2

不要对二进制数据使用字符串函数。看看unpack函数。

+1

由于他的示例输入似乎是在十六进制编辑器中采取的截图,我还建议他检查*实际*输入; 'unpack'绝对是一种更好的方式,但是如果输入不好,它将无济于事。 – Rob

+2

其实[strpos](http://php.net/manual/en/function.strpos.php)**是**二进制安全的。请参阅手册中的说明。 – nobody

+0

嗨,这就是我正在做的。我现在明天会看到更多,我有一些意见。谢谢您的帮助!我会在明天解包。 http://stackoverflow.com/questions/6740268/test-php-carve-for-jpg-files – Shawn