2012-04-04 36 views
4

我有一个小问题:)我可以使用PHP编辑二进制(十六进制)文件,替换字符串并保存而不破坏二进制文件?

  1. 我有一个二进制文件-executable-我想编辑和更换 串
  2. 我打开与PHP文件,执行替换,并将其保存
  3. 保存的二进制文件已损坏。

如果我使用SED或任何十六进制编辑器,它工作正常。

我可以打开,编辑(替换字符串)并使用PHP保存二进制文件吗?

非常感谢!

+0

好的,是的。你的代码是什么样的? – 2012-04-04 12:57:07

+0

你不认为显示你用来在PHP中执行的代码会起作用吗? – 2012-04-04 12:57:11

+0

是的,对不起。代码是这样的: – flaab 2012-04-04 13:13:29

回答

0

您可以逐字节地读取文件,进行二进制比较以及逐字节替换。编写看起来像C代码的PHP代码:D

+1

这是什么答案? “编写看起来像C代码的PHP代码”? – 2012-04-04 12:59:27

+0

这是什么样的评论? “这是什么答案?” – 2012-04-04 13:35:30

+0

Peter的评论基本上是C中带有$的变量:D 我真正建议的是做字节操作,并且避免PHP的所有字符串解析函数。仅使用PHP与C共享的文件/字节数组操作的子集。 – Tei 2012-04-05 08:50:57

2

在区分二进制文本文件和文本文件(即Windows)的系统上,必须使用fopen()模式参数中包含的'b'打开该文件。然后在文件上使用fread和fwrite。

<?php 
$fp = fopen('binary_file.bin', 'w+b'); 
fwrite($fp, '1'); 
fclose($fp); 
?> 
+0

但是,这只是完全覆盖文件而不搜索特定的字符串,不是吗? – user124384 2015-07-25 00:06:43

相关问题