[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Редактирование данных из файла
<?php
Ребят, кто мне объяснит, как можно редактировать данные находящиеся в текстовом файле, с помощью PHP скрипта?
Вот, twin, объяснил мне примерный алгоритм:
1.) Вытащить в массив;
2.) Достать нужную, отредактировать;
3.) Засунуть на место и перезаписать файл.

1 - ый пункт, я понял кое-как. А вот 2-ой знаю, что нужно по номеру достать новость, но откуда номер взять?! И 3-ий пункт непонятен.



Спустя 19 минут, 53 секунды (19.08.2009 - 11:11) Гость_hara написал(а):
Отличные вопросы)
Особенно второй вопрос)
- Берите постоянно седьмую новость. - Почему седьмую, ну потому что цифра хорошая)
вообщето какая вам нужна новость - можете знать только вы, - но берите седьмую ))

хотя наверное бесполезно но всё же:
file, file_put_contents, file_get_contents, fopen, fclose, fputs
- вот функции - сходите на php.net и посмотрите что они значат.

Спустя 2 минуты, 58 секунд (19.08.2009 - 11:14) FatCat написал(а):
Я не знаю как правильно, могу рассказать как я это делаю.
PHP
// 1. Вытаскиваю в массив строк:
$txt explodePHP_EOL,file_get_contents"/home/tram_pam_pam/file.txt" ) );

// 2. Отредактировать нужные строки:
$n count($txt);
for(
$i=0;$i<$n;$i++)
{
    
$txt[$i] = my_function($txt[$i]);
}

//3. Засунуть на место и перезаписать файл:
$fh fopen("/home/tram_pam_pam/file.txt","w");
flock($fh,2);
fwrite($fhimplode(PHP_EOL$txt));
flock($fh,3);
fclose($fh);

Спустя 20 секунд (19.08.2009 - 11:15) <?php написал(а):
Гость_hara, ты лучше глаза открой и внимательно прочти. А выпендриваться, не к чему.

Спустя 1 минута, 2 секунды (19.08.2009 - 11:16) <?php написал(а):
FatCat, спасибо. Буду пробовать.)

Спустя 3 минуты, 21 секунда (19.08.2009 - 11:19) <?php написал(а):
FatCat, а дальше как поступать? сори за вопрос такой.

Спустя 2 минуты, 48 секунд (19.08.2009 - 11:22) Гость_hara написал(а):
<?php читал два раза.
И не увидел причин писать вам код для решения этого вопроса.
(ответ сводится к запросу в поисковик со словами "работа с файлами")
(именно из за того что сдесь пишут ответы на всё, не пытаясь человеку самому
найти ответ, на форуме мало интересных постов)
И вам было бы полезнее найти этот ответ самому.
Остался при своём мнении, но учту и больше не буду "выпендриваться" )


Спустя 10 минут, 50 секунд (19.08.2009 - 11:33) <?php написал(а):
Гость_hara, спасибо, что поняли.

Спустя 10 минут, 8 секунд (19.08.2009 - 11:43) Krevedko написал(а):
ув.FatCat
Это, я так понимаю, он перезаписывает полностью весь файл ?
А если файл большой-не тормозит ?
И еще..что за сепаратор такой PHP_EOL ?
А так..код весьма даже понятен. Буду иметь ввиду, хоть с файлами и не работаю.

Спустя 1 час, 45 минут, 10 секунд (19.08.2009 - 13:28) glock18 написал(а):
PHP_EOL - php end of line
константа простая. типа "\n" только ставится в зависимости от операционки (\r\n или \n).

<?php
hara прав, вы нет.

Цитата (<?php @ 19.08.2009 - 07:52)
1 - ый пункт, я понял кое-как.
;
PHP
$lines file()

2. нужные лайны парсишь как тебе надо. можно все, как FatCat предложил:
PHP
for ($i 0; isset($lines[$i]); $i++)
{
  
// делай че хошь.
  
$lines[$i] = $newValue;
}


3. file_put_contents + implode.

Спустя 13 минут, 5 секунд (19.08.2009 - 13:41) <?php написал(а):
glock18, я писал, чтобы он не выпендривался.

Спустя 2 часа, 54 минуты, 7 секунд (19.08.2009 - 16:35) FatCat написал(а):
Цитата (Krevedko @ 19.08.2009 - 12:43)
Это, я так понимаю, он перезаписывает полностью весь файл ?
А если файл большой-не тормозит ?

На практике 160-мегабайтный файл на чтение и перезапись съел на денвере 20 секунд, здесь на хостинге 4 секунды.


Цитата (glock18 @ 19.08.2009 - 14:28)
PHP
$lines file()

Тут все хорошо, пока имеем файлы, созданные скриптом на хосте, и на том же хосте другим скриптом читаемые.
Траблы начинаются, когда виндовый файл кидается по ФТП с кривым расширением (идет как бинарник) и открываются скриптом на юниксовых машинах.
Файл в 10 строк читается как массив 20 строк - через одну пустые строки.
Категорически предпочитаю эксплодить по PHP_EOL, она и в такой ситуации отдаст верный массив строк.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.