2012-06-06 1 views
1

Я читал/тестировал примеры с прошлой ночи, , но коров так и не пришли домой.Как разделить контент на равные части, а затем записать в файл в PHP

У меня есть файл с (например) прибл. 1000 символов в одной строке и хотите разбить его на 10 равных частей, а затем записать обратно в файл.

Цель:

1. Open the file in question and read its content 
2. Count up to 100 characters for example, then put a line break 
3. Count 100 again and another line break, and so on till it's done. 
4. Write/overwrite the file with the new split content 

Например:

I want to turn this => KNMT2zSOMs4j4vXsBlb7uCjrGxgXpr 

Into this: 

KNMT2zSOMs 
4j4vXsBlb7 
uCjrGxgXpr 

Это то, что я до сих пор:

<?php 
$MyString = fopen('file.txt', "r"); 

$MyNewString; 
$n = 100; // How many you want before seperation 
$MyNewString = substr($MyString,0,$n); 
$i = $n; 
while ($i < strlen($MyString)) { 
$MyNewString .= "\n"; // Seperator Character 
$MyNewString .= substr($MyString,$i,$n); 
$i = $i + $n; 
} 
file_put_contents($MyString, $MyNewString); 

fclose($MyString); 
?> 

Но это не работает так, как я ожидал.

Я понимаю, что есть другие похожие вопросы, подобные моим, но они не показывали, как читать файл, а затем писать обратно.

+0

так где проблема здесь? Чтение/запись файла? или расщепление строки? –

+0

@navnav Запись разделенного содержимого обратно в файл. Я попробовал это только сейчас 'file_put_contents ($ MyString, $ MyNewString);' но он не работает. –

+0

@navnav Это работает 'echo $ MyNewString;', но это не 'file_put_contents ($ MyString, $ MyNewString);' что я делаю неправильно? –

ответ

1

Держись здесь. Вы не указываете имя файла/путь к file_put_contents();, вы даете дескриптор файла.

Попробуйте это:

file_put_contents("newFileWithText.txt", $MyNewString); 

Вы видите, при выполнении $var=fopen();, вы даете $var значение ручки, которая не предназначена для использования с file_put_contents();, как оно не попросить ручку, но вместо имени файла. Таким образом, это должно быть: file_put_contents("myfilenamehere.txt", "the data i want in my file here...");

Простой.

+0

Успех! Спасибо за это и добавленную информацию. –

1

Взгляните на документацию для str_split. Он займет строку и разбивает ее на куски по длине, сохраняя каждый фрагмент в отдельном индексе в массиве, который он возвращает. Затем вы можете перебирать массив, добавляя разрыв строки после каждого индекса.

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