Baranov_Dron
Новичок
удаление первой строчки txt
Но после изучения Си в институте файлы полюбил. ЧТож решил поработать и в php.
Иногда требуется удалить первую строчку файла.
Ну в заготовке была функция, чесно говоря не сам даже писал(не люблю в php с файлами работать - есть БД).
Собственно её код:
Алгоритм её таков, что весь файл заносится в память по сути. Нечего и говорить, что очень ресурсоёмко!
Нужно как то сократить её!
я вижу путь, который я сделал бы в C.
Брал бы по-одному символу и удалял его смещая символы влево, удалял бы циклом по одному символу, пока не дошёл \r\n.
Но выполнить это не могу, считывать то символы не сложно... А вот удалять по-одному представляется проблемой лично для меня.
Чтож 100 бед - один ман!
http://ru2.php.net/manual/ru/ref.filesystem.php
Но тут всего 2-3 функции для записи! и все толком не подходят...
ВОт кое-что поэксперементил...
В общем создалось впечатление, что лучше первоначальное решение. Чтож поделать, что оно ресурсоёмкое...
Может ли кто его опровергнуть?!
Но после изучения Си в институте файлы полюбил. ЧТож решил поработать и в php.
Иногда требуется удалить первую строчку файла.
Ну в заготовке была функция, чесно говоря не сам даже писал(не люблю в php с файлами работать - есть БД).
Собственно её код:
PHP:
<?
$file = file( "file.txt" );
array_splice($file,0,1);
$f = fopen("file.txt","w");
for( $i = 0; $i < count($file); $i++ )
{
fwrite( $f , $words_delit[$i]);
}
fclose($f);
?>
Нужно как то сократить её!
я вижу путь, который я сделал бы в C.
Брал бы по-одному символу и удалял его смещая символы влево, удалял бы циклом по одному символу, пока не дошёл \r\n.
Но выполнить это не могу, считывать то символы не сложно... А вот удалять по-одному представляется проблемой лично для меня.
Чтож 100 бед - один ман!
http://ru2.php.net/manual/ru/ref.filesystem.php
Но тут всего 2-3 функции для записи! и все толком не подходят...
ВОт кое-что поэксперементил...
PHP:
<?
$fp=fopen("1.txt","r+b");
$n=1;
$tmp=false;
while (false !== ($char = fgetc($fp)))
{
echo $n.":";
if($char==="\n"){if($tmp) break;}
if($char==="\r"){$tmp=true;}
var_dump($char)."<p>";
echo "<p>"; $n++;
}
fseek($fp, 0);
ftruncate($fp,-3);
?>
Может ли кто его опровергнуть?!
