HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 12.01.2009, 23:23
geforce
Постоянный
Регистрация: 21.08.2008
Сообщений: 302
Провел на форуме:
458686

Репутация: -25
Отправить сообщение для geforce с помощью ICQ
Wink

Цитата:
Сообщение от -=lebed=-  
Как вставить некоторую строку в середину (в текущую позицию указателя) файла без затирания имеющихся там данных (на которые указывает тек. указатель)?
Условия: юзаем только один файл, не используем оперативн. память (массивы)

Ну допустим есть файл строк:
Код:
576iuh
jhgkjh
jhgjhjh
jhgjhhj
9878687
<-------- нужно вставить " hg788gjlо"
jhgfjhgjh - затруться
kjhh755
kglh
hgkjhj
Это вообще возможно? если делать fputs($f,$s); то данные затираются на этом месте, а надо бы сдвинуть...
По моему вот так:
PHP код:
fputs($f,$s."\r\n"); 
 
Ответить с цитированием

  #2  
Старый 12.01.2009, 23:21
preda1or
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме:
1495545

Репутация: 242
Отправить сообщение для preda1or с помощью ICQ
По умолчанию

-=lebed=-
PHP код:
<?

$tochange
="jhgfjhgjh";
$changeto=" hg788gjlо";

$fr=fopen("file.txt""r");
$fw=fopen("temp.txt","a");

while(!
feof($fr)){
    
$line=fgets($fr,4096);
    if(
$line==$tochange$line=$changeto;
    
fwrite($fw,$line."\r\n");
}
copy("temp.txt","file.txt");
unlink("temp.txt");
fclose($fr);
fclose($fw);

?>
СОРРИ не заметил про один файл(((

Последний раз редактировалось preda1or; 12.01.2009 в 23:23..
 
Ответить с цитированием

  #3  
Старый 12.01.2009, 23:21
Kaimi
Познавший АНТИЧАТ
Регистрация: 23.08.2007
Сообщений: 1,237
Провел на форуме:
18127311

Репутация: 1676


Отправить сообщение для Kaimi с помощью ICQ
По умолчанию

Цитата:
Условия: юзаем только один файл, не используем оперативн. память (массивы)
Это так обязательно? Можно было бы символ переноса в данной строке заменить на \nТекст\n
 
Ответить с цитированием

  #4  
Старый 12.01.2009, 23:26
preda1or
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме:
1495545

Репутация: 242
Отправить сообщение для preda1or с помощью ICQ
По умолчанию

-=lebed=-
PHP код:
<?

$tochange
="jhgfjhgjh";
$changeto=" hg788gjlо";
$string="";
$fr fopen("file.txt""r+");
while(!
feof($fr)){
    
$line=fgets($fr,4096);
    
$line=str_replace("\r","",$line);
    
$line=str_replace("\n","",$line);
    
$line=str_replace("\t","",$line);
    if(
$line==$tochange$line=$insert."\r\n".$line;
    
$string.=$line."\r\n";

}
fclose($fr);

$fr fopen("file.txt""r+");
fwrite($fr,$string);
fclose($fr);

?>

Последний раз редактировалось preda1or; 12.01.2009 в 23:36..
 
Ответить с цитированием

  #5  
Старый 12.01.2009, 23:35
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

ну раз использовать только один файл и не использовать массивы, то например вот так:
PHP код:
<?php
$file 
'1.txt';
$a '9878687'//После чего вставить
$b 'hg788gjlо'//Что вставить
$open file_get_contents($file);
file_put_contents($filestr_replace($a$a."\r\n".$b$open));

?>
 
Ответить с цитированием

  #6  
Старый 12.01.2009, 23:39
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

Цитата:
Сообщение от .:EnoT:.  
ну раз использовать только один файл и не использовать массивы, то например вот так:
PHP код:
<?php
$file 
'1.txt';
$a '9878687'//После чего вставить
$b 'hg788gjlо'//Что вставить
$open file_get_contents($file);
file_put_contents($filestr_replace($a$a."\r\n".$b$open));

?>
как бы этот пример как и все выше загружает файл в оперативную память

Последний раз редактировалось ntldr; 12.01.2009 в 23:41..
 
Ответить с цитированием

  #7  
Старый 12.01.2009, 23:51
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

Цитата:
Сообщение от ntldr  
как бы этот пример как и все выше загружает файл в оперативную память
Чтение файла это и подразумевает, без этого никак)
Поэтому я лишь привёл более-менее вменяемый и простой пример.

neval, не, там пустая строка образуется, если в конце перенос ставить)
 
Ответить с цитированием

  #8  
Старый 12.01.2009, 23:55
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме:
2364957

Репутация: 479
По умолчанию

Цитата:
Сообщение от .:EnoT:.  
Чтение файла это и подразумевает, без этого никак)
Поэтому я лишь привёл более-менее вменяемый и простой пример.

neval, не, там пустая строка образуется, если в конце перенос ставить)
ну это понятно, просто у лебедя там написано было так. ну в принципе наверно так возможно, но только на ассемблере.

а если файл очень большой можно читать его кусками
 
Ответить с цитированием

  #9  
Старый 12.01.2009, 23:42
neval
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($filestr_replace($a$a."\r\n".$b."\r\n"$open));

?>
 
Ответить с цитированием

  #10  
Старый 12.01.2009, 23:49
preda1or
Участник форума
Регистрация: 27.10.2008
Сообщений: 278
Провел на форуме:
1495545

Репутация: 242
Отправить сообщение для preda1or с помощью ICQ
По умолчанию

Цитата:
как бы этот пример как и все выше загружает файл в оперативную память
я так понял что нельзя юзать просто массивы, а как ты выполнишь программу без использования оперативной памяти?o.O
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ