PHP как записать в нужную строку данные.

Статус
В этой теме нельзя размещать новые ответы.

DRUG_ADDICT

Создатель
Регистрация
9 Янв 2007
Сообщения
33
Реакции
12
Люди вот такой у меня вопрос, помогите пожалуйста!

Как записать в нужную строку данные. Объясняю... например есть есть текстовый файл:

[начало]
один
два
три
четыре
шесть
семь
восемь
девять
[конец]

если посмотреть внимательней то в этом текстовом файле не хватает слова "пять" вот... наверно вы уже поняли мой вопрос но я углу***юсь...
Надо с помощью PHP сделать запись в файле, слова "пять" на строчке 5... при этом не задеть такие слова как "четыре"..."шесть" чтобы между ними встало слово "пять" и выглядело это так:

[начало]
один
два
три
четыре
пять
шесть
семь
восемь
девять
[конец]

Можно ли это сделать средствами PHP ? Как, и если можно пример ?
Заранее, СПАСИБО огромное !
 
сходу в голову пришло. правда для больших файлов долго будет - есть варианты, наверное, по проще.

берете содержимое файла file_get_contents
полученную строку собираете в массив через explode используя в качестве разделителя перенос строки.
собираете новый массив где 4 ( ибо нумерацию идет с нуля - не забывайте об этом) элементом идет слово "пять".

пишите все обратно в файл.
 
сходу вставляем 5 строчку "пять" с переводом строки и каретки
Код:
$array=file("1.txt"); //получим массив $arr где $arr[$i] $i ая строка
$fp=fopen("1.txt","w");
for($i=0;$i<4;$i++) fputs($fp,$arr[$i]);

fputs($fp,"пять".chr(13).chr(10));

for($i=4;$i<count($arr);$i++) fputs($fp,$arr[$i]);

fclose($fp);
 
А можно просто тупо указать (бес всяких масивов и определения содержимого в файле) чтобы слово "пять" вставить в пятую строчку или в десятую... при это не задеть остальные строчки?
 
"тупо" это одной встроенной функцией PHP? нет. Но можно написать свою

PHP:
function insertLine($filename, $row, $value)
{
$array=file($filename); //получим массив $arr где $arr[$i] $i ая строка

if (count($array) < $row) $row =  count($array);
if ($row < 1) $row =  1;

$fp=fopen($filename,"w");
for($i=0;$i < ($row-1); $i++) fputs($fp,$arr[$i]);

fputs($fp, $value . chr(13) . chr(10));

for($i = ($row-1); $i<count($arr); $i++) fputs($fp,$arr[$i]);

fclose($fp);
}

а дальше просто вызываешь

PHP:
insertLine('myfile.txt', 5, 'пять');
insertLine('myfile.txt', 25, 'двадцать пять');
insertLine('myfile.txt', 2, 'шесть'); // вставить слово "шесть" во вторую строчку
 
Или вот так

function insertLine($file, $row, $value) {
$arr = file($file);
$f = fopen($file, 'w');
fwrite($f, join('', array_merge(array_slice($arr, 0, $row), array($value."\n\r"), array_slice($arr, $row))));
fclose($f);
}
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху