2012-02-03 72 views
0

如何從二進制數據中刪除一些行(「\ r \ n」): 例如,如果我有$ data,這是我從數據庫獲取的二進制文件的內容並想從中刪除前五行。從二進制數據中刪除行

這怎麼可以在PHP中完成?

+2

二進制數據沒有「行」。它有字節,就是這個。它可能有一些形成字符的字節組,看起來像線條,但將它們看成是這樣會給你帶來各種煩惱。 – cHao 2012-02-03 14:13:46

+0

實際上有一些文件格式與ASCII元數據在開始時使用換行符,回車或甚至兩者作爲分隔符,所以這可能是真正的文本行。 – h00ligan 2012-02-03 14:34:21

回答

2
// Load the file into memory 
$fileData = file_get_contents('myfile.bin'); 

// Split it by CRLF sequences 
$fileData = explode("\r\n", $fileData); 

// Remove the first 5 lines 
$fileData = array_slice($fileData, 5); 

// Turn it back into a string 
$fileData = implode("\r\n", $fileData); 

// Write it back to the file 
file_put_contents('myfile.bin', $fileData); 

,或者在一個行:

file_put_contents('myfile.bin', implode("\r\n", array_slice(explode("\r\n", file_get_contents('myfile.bin')), 5))); 

但是如果你想用「二進制數據」要做到這一點,我會質疑是否真的是二進制數據。

1

如果你只是想擺脫字符串開頭的所有空行,你可以使用ltrim()PHP Manual ltrim,但如果行不是空的,並且你知道你想擺脫5行,那麼這preg_replace函數應該做的伎倆:

$newData = preg_replace('/(.*)\r\n/', '', $data, 5); 

[編輯:] 試想想它,這可能不是在所有的二進制數據的工作,但你可以給它一個嘗試。