【问题标题】:Can I edit a binary (hex) file with PHP, replace a string and save without corrupting the binary?我可以用 PHP 编辑二进制(十六进制)文件,替换字符串并保存而不损坏二进制文件吗?
【发布时间】:2012-04-04 12:55:11
【问题描述】:

我有一个小问题:)

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

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

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

非常感谢!

【问题讨论】:

  • 嗯,是的。你的代码是什么样的?
  • 你不认为显示你用来在 PHP 中执行的代码会很重要吗?
  • 是的,对不起。代码是这样的:
  • 请编辑您的原始问题以放入您的代码中。这是正常的方式,它不会显示在您的评论中。

标签: php binary


【解决方案1】:

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

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

【讨论】:

  • 但这只是完全覆盖文件而不搜索特定字符串,不是吗?
【解决方案2】:

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

【讨论】:

  • 这是什么答案? “编写看起来像 C 代码的 PHP 代码”?
  • 那是什么评论? “这是什么答案?”
  • Peter 的注释基本上是 C,变量中有 $ :D 我真正的建议是做字节操作,避免 PHP 的所有字符串解析功能。仅使用 PHP 与 C 共享的文件/字节数组操作的子集。
猜你喜欢
  • 2011-05-30
  • 2018-09-11
  • 2021-10-27
  • 2017-07-21
  • 2015-08-30
  • 2021-09-02
  • 2020-10-25
  • 2014-06-10
  • 2010-11-17
相关资源
最近更新 更多