2010-06-23 64 views
1

我想創建一個在線php hexeditor,用戶上傳文件,服務器對其執行指定的hexedit,然後將新文件保存在服務器上。我在想,我應該編寫一個.bat文件,在Windows上打開十六進制編輯器,執行指定的操作,然後返回新文件。我可以使用php函數系統()或類似的東西。任何人都知道做這一切的好方法?在php中打開.bat文件

+3

什麼打算在.bat文件中,你不能在PHP做呢? – 2010-06-23 23:16:13

回答

1

你當然可以使用PHP來實現這一點。

你需要做的是:

  • 讀取文件作爲二進制
  • 轉換爲十六進制表示
  • 顯示它的方式你喜歡

查看fread函數,有一個示例顯示如何以二進制形式讀取文件。

然後使用bin2hex函數,它會給你一個二進制數據的十六進制表示。

這裏有一個簡單的例子:

<?php 
$filename = "c:\\files\\somepic.gif"; 
$handle = fopen($filename, "rb"); 
$contents = fread($handle, filesize($filename)); 
fclose($handle); 

$cols = 8; 
$hex = bin2hex($contents); 
$hex_split = str_split($hex,4*$cols); 

foreach($hex_split as $h) 
{ 
    $tmp = str_split($h, 4); 
    foreach($tmp as $t) 
    echo $t.' '; 
    echo "\r\n"; 
} 
?> 

您將獲得例如:

d45b 0500 0000 0000 0c00 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0300 0000 
0000 0000 0000 0000 0000 0000 0000 0000 
e05b 0500 0000 0000 f400 0000 0000 0000 
0000 0000 0000 0000 0100 0000 0000 0000 
0000 0000 0000 0000 
+0

非常感謝!在我打開它之後,能否幫助我編寫和編輯該文件? – apple 2010-06-24 01:31:36

+0

另外,當我試圖用一個非常大的文件來做這件事時,我得到一個錯誤。難道這只是一個PHP的限制? – apple 2010-06-24 01:42:14

+0

爲了將來的參考,我記得閱讀了一些有關PHP的文件超過2GB的問題。 – mowwwalker 2011-07-23 19:06:05