ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

12.01.2009, 23:39
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
479
|
|
Сообщение от .:EnoT:.
ну раз использовать только один файл и не использовать массивы, то например вот так:
PHP код:
<?php
$file = '1.txt';
$a = '9878687'; //После чего вставить
$b = 'hg788gjlо'; //Что вставить
$open = file_get_contents($file);
file_put_contents($file, str_replace($a, $a."\r\n".$b, $open));
?>
как бы этот пример как и все выше загружает файл в оперативную память
Последний раз редактировалось ntldr; 12.01.2009 в 23:41..
|
|
|

12.01.2009, 23:42
|
|
Moderator - Level 7
Регистрация: 13.12.2006
Сообщений: 531
Провел на форуме: 2127116
Репутация:
383
|
|
Сообщение от .:EnoT:.
ну раз использовать только один файл и не использовать массивы, то например вот так:
Или так? ))
PHP код:
<?php
$file = '1.txt';
$a = '9878687'; //После чего вставить
$b = 'hg788gjlо'; //Что вставить
$open = file_get_contents($file);
file_put_contents($file, str_replace($a, $a."\r\n".$b."\r\n", $open));
?>
|
|
|

12.01.2009, 23:49
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме: 1495545
Репутация:
242
|
|
как бы этот пример как и все выше загружает файл в оперативную память
я так понял что нельзя юзать просто массивы, а как ты выполнишь программу без использования оперативной памяти?o.O
|
|
|

12.01.2009, 23:51
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме: 4832771
Репутация:
1916
|
|
Сообщение от ntldr
как бы этот пример как и все выше загружает файл в оперативную память
Чтение файла это и подразумевает, без этого никак)
Поэтому я лишь привёл более-менее вменяемый и простой пример.
neval, не, там пустая строка образуется, если в конце перенос ставить)
|
|
|

12.01.2009, 23:55
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
479
|
|
Сообщение от .:EnoT:.
Чтение файла это и подразумевает, без этого никак)
Поэтому я лишь привёл более-менее вменяемый и простой пример.
neval, не, там пустая строка образуется, если в конце перенос ставить)
ну это понятно, просто у лебедя там написано было так. ну в принципе наверно так возможно, но только на ассемблере.
а если файл очень большой можно читать его кусками
|
|
|

12.01.2009, 23:56
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
$open = file_get_contents($file); - не прокатит файл не поместится в памяти...
Я так думаю тут надо вручную двигать хвост...
т.е. вычисляем длину вставляемых данных, затем указатель на конец файла, пишем в конец пустышку такой длины. Далее указатель на последнее слово в файле, читаем его и пишем в него же с нужным смещением и так в цикле, в итоге пишем нужные данные в нужное свободное место... Реально реализовать так? Может есть уже готовые реализации?
P.S. Нужно работать с малым колличеством памяти (допустим 64 Mб с файлами 200-500Мб.)
Ну конечно можно читать/писать не по 1 слову, а блоками данных опред. длины (лиж бы в памяти помещались).
Последний раз редактировалось -=lebed=-; 13.01.2009 в 00:00..
|
|
|

13.01.2009, 00:00
|
|
Постоянный
Регистрация: 19.03.2007
Сообщений: 684
Провел на форуме: 3152874
Репутация:
1020
|
|
Сообщение от -=lebed=-
$open = file_get_contents($file); - не прокатит файл не поместится в памяти...
Я так думаю тут надо вручную двигать хвост...
т.е. вычисляем длину вставляемых данных, затем указатель на конец файла, пишем в конец пустышку такой длины. Далее указатель на последнее слово в файле, читаем его и пишем в него же с нужным смещением и так в цикле, в итоге пишем нужные данные в нужное свободное место... Реально реализовать так? Может есть уже готовые реализации?
P.S. Нужно работать с малым колличеством памяти (допустим 64 Mб с файлами 200-500Мб.)
Тогда придется организовывать циклы, и цитать в память порциями даные из файла в поисках необходимого значения. Аля fgets() - fseek().
Последний раз редактировалось AkyHa_MaTaTa; 13.01.2009 в 00:02..
|
|
|

13.01.2009, 00:14
|
|
Флудер
Регистрация: 21.06.2006
Сообщений: 3,193
Провел на форуме: 12702287
Репутация:
4738
|
|
Сообщение от AkyHa_MaTaTa
Тогда придется организовывать циклы, и цитать в память порциями даные из файла в поисках необходимого значения.
Ну да, без циклов тут не обойтись...
Вообщем нужна такая функция:
insert_into_file($f,$s,$sring)
$f - file handle
$s - место вставки (для удобства к примеру номер строки, у нас текстовый файл, набор строк, разделённых \n\r)
$sring - вставляемая строка.
|
|
|

13.01.2009, 00:24
|
|
Познающий
Регистрация: 06.01.2009
Сообщений: 37
Провел на форуме: 62317
Репутация:
6
|
|
Люди подскажите пожалуйста, как сделать что бы в форме пробел - заменялся знаком?
к примеру вводят - Купить прогу
а скрипт должен вместо пробела поставить символ "#"
Купить#прогу плз =)
|
|
|

13.01.2009, 00:32
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
479
|
|
Сообщение от ANTIJABBER
Люди подскажите пожалуйста, как сделать что бы в форме пробел - заменялся знаком?
к примеру вводят - Купить прогу
а скрипт должен вместо пробела поставить символ "#"
Купить#прогу плз =)
str_replace(" ","#","Купить прогу");
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|