Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Добавление строк в начало, а не в конец файла
 
 автор: Rifmasta   (25.05.2009 в 19:44)   письмо автору
 
 

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

Вот моя ф-ция записи в файл:


if ($text!="") {
$f_out = fopen( "msg.txt" , "a+");
fwrite($f_out,$text); 
fclose($f_out); 
}



Спасибо

  Ответить  
 
 автор: Nemezis   (25.05.2009 в 19:52)   письмо автору
 
   для: Rifmasta   (25.05.2009 в 19:44)
 

http://ru2.php.net/manual/ru/function.fseek.php

  Ответить  
 
 автор: Rifmasta   (25.05.2009 в 20:00)   письмо автору
 
   для: Nemezis   (25.05.2009 в 19:52)
 

Спасибо. но я честно говоря немного недопонимаю как его связать с моей функцией ((

ЧТо мне добавить в этот код чтобы сообщение добавлялось в начало, а остальные строки сдвигались вниз:


$f_out = fopen( "msg.txt" , "a+");
$text = "Строка которую следует добавить в начало файла<br>";
fwrite($f_out,$text);
fclose($f_out);


Прошу прощения за свою тупость, просто только начинаю разбираться с ПХП )) Хэлп ми плиЗ))

  Ответить  
 
 автор: Rifmasta   (25.05.2009 в 20:23)   письмо автору
 
   для: Rifmasta   (25.05.2009 в 20:00)
 

Напишите ж кто-нибудь!!!

  Ответить  
 
 автор: VITtek   (25.05.2009 в 22:39)   письмо автору
 
   для: Rifmasta   (25.05.2009 в 20:23)
 

<?php 
$text
='Строка которую следует добавить в начало файла<br>';
if (
$text!="")
{
$text_1=file_get_contents('msg.txt');
$fd=$text.$text_1;
$f_out fopen("msg.txt","w");
fwrite($f_out$fd); 
fclose($f_out);
}
?>

  Ответить  
 
 автор: confirm   (13.10.2012 в 13:54)   письмо автору
 
   для: VITtek   (25.05.2009 в 22:39)
 

А почему br? )

  Ответить  
 
 автор: ???   (25.05.2009 в 20:28)
 
   для: Rifmasta   (25.05.2009 в 20:00)
 

сдвинуть все существующие строки по файлу можно только перезаписав этот файл полностью.
Например сначала считав его весь в память (переменную)

  Ответить  
 
 автор: Valick   (30.05.2009 в 19:30)   письмо автору
 
   для: ???   (25.05.2009 в 20:28)
 

сначала считав его весь в память (переменную)
Это подходит для файлов маленького размера.
Для больших файлов можно например использовать "промежуточный файл", в который пишите строку, а затем по одной строке пишите в него из старого файла. После чего удаляете старый и переименовываете новый.

  Ответить  
 
 автор: Dlive   (13.10.2012 в 13:43)   письмо автору
 
   для: ???   (25.05.2009 в 20:28)
 


тут сами Textarea и button - submit
<?
if ($_POST['textarea']<>"") { // здесь если в текст арее, куда мы вводим текст, есть символы

$text='пробел'//для того чтобы добавилась 1вая строчка без нее не добавится 
$new=fopen('Text.txt'"a");//директория для записи
fputs($new$text); //fputs аналог fwrite
fclose($new);

}

$f file('Text.txt'); // читаем массив строк в документе
krsort($f); // сортируем в обратном порядке по ключу строки
 
if ($_POST['textarea']<>"") { // здесь если в текст арее, куда мы вводим текст, есть символы

$newtext="ТЕКСТ который добавляем"'; 

$file=file_get_contents('
Text.txt');  //читаем еще раз файл другим способом
$file=preg_replace($newtext, $file); //выбираем тест который надо удалить
file_put_contents('
Text.txt',$file); //перезаписывем

for($i=0; $i < count($f); $i++) //массив строк $f который был выше $i символы

$text=$f[$i]; //запоминаем старый текст из документа
}
$newtext="ТЕКСТ"; //еще разок наш текст
$new=fopen('
TextNews.php', "a");//директория для записи
fwrite($new, $newtext);//запись
fclose($new);// и закрываем
}
}
?>


работает 100% может не совсем корректно сформирован код.

  Ответить  
 
 автор: confirm   (13.10.2012 в 13:58)   письмо автору
 
   для: Dlive   (13.10.2012 в 13:43)
 

А проще разве нельзя, если речь идет о добавление в начало?
<?
file_put_contents
('Text.txt',$add_str."\n".file_get_contents('Text.txt'));

  Ответить  
 
 автор: Dlive   (13.10.2012 в 14:27)   письмо автору
 
   для: confirm   (13.10.2012 в 13:58)
 

эм ну незнаю я скомпилировал в браузере но этот вариант добавляет в начало и в конец 2 одинаковых строчки )

да и в моем коде одна лишнаяя переменная $newtext="Текст..." просто сейчас только делал код; изза нее ошибка может быть. а так 100% работает. там еще по возможности можно / n поставить для коректности записи. )

  Ответить  
 
 автор: confirm   (13.10.2012 в 14:30)   письмо автору
 
   для: Dlive   (13.10.2012 в 14:27)
 

Какой вариант две строчки?

  Ответить  
 
 автор: Dlive   (13.10.2012 в 14:32)   письмо автору
 
   для: confirm   (13.10.2012 в 14:30)
 

file_put_contents('Text.txt',$add_str."\n".file_get_contents('Text.txt'));

  Ответить  
 
 автор: Dlive   (13.10.2012 в 14:35)   письмо автору
 
   для: Dlive   (13.10.2012 в 14:32)
 

аа все извиняюсь )) забыл убрать
//$new=fopen('TextNews.php', "a");//директория для записи
//fwrite($new, $newtext);
//fclose($new);


все работает спасибо Confirm

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования