2012-02-03 108 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); 

[编辑:] 试想想它,这可能不是在所有的二进制数据的工作,但你可以给它一个尝试。