2012-02-03 2 views
0

Как удалить некоторые строки («\ r \ n») из двоичных данных: например, если у меня есть $ data, то есть содержимое двоичного файла, который я получаю из своей базы данных и хотел удалить первые пять строк из него.Удаление строк из двоичных данных

Как это можно сделать в php?

+2

Двоичные данные не имеют «линий». У него есть байты, и это все. У него могут быть несколько групп байтов, которые образуют символы, которые * выглядят * как строки, но обращение с ними как таковое вызовет у вас все виды раздражения. – cHao

+0

На самом деле на самом деле есть некоторые форматы файлов с метаданными ASCII в начале, используя символы новой строки, возврат каретки или даже оба в качестве разделителей, поэтому это могут быть реальные текстовые строки. – h00ligan

ответ

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); 

[Edit:] Давай думать об этом, это может не работать для двоичных данных на всех, но вы можете дать ему попробовать.

Смежные вопросы