|
|
|
| Добрый день.
есть: *.txt
содержание:
...
1020::Текст1::Текст2
1280::Текст1::Текст2
7946::Текст1::Текст2
...
:: - разделитель
Подскажите как отредактировать допустим запись 1280::Текст1::Текст2 на 0001::Тскет1::Тскет2 | |
|
|
|
|
|
|
|
для: ddimanich
(26.02.2007 в 13:37)
| | Могу предложить такой вариант (если поиск записи по номеру):
<?php
$lines = file("text.txt");
$file = fopen("text.txt", "w");
foreach($lines as $value)
{
list($id,$text1,$text2) = explode('::', rtrim($value));
if($id=='1280')
{
$id = '0001';
$text1 = 'Тскет1';
$text2 = 'Тскет2';
$value = implode('::', array($id, $text1, $text2));
}
fwrite($file, "$value\r\n");
}
fclose($file);
?>
|
| |
|
|
|
|
|
|
|
для: mesos
(26.02.2007 в 13:51)
| | Я с файлами на уровне записи не работал, но рискну выдвинуть предположение - разве можно ОДНОВРЕМЕННО открывать файл на чтение и читать его построчно и открывать файл для записи и записывать в него "построчно"...??? Мне все-таки кажется, что или нужно новый "файл" писать на этапе пойиска в буфер, а потом уже перезаписывать файл текстом из буфера... или писать во временный файл и потом старый затирать, и новому присваивать его имя... но вообще такие весчи чреваты гемором, связанным с одновременным доступом. | |
|
|
|
|
|
|
|
для: ZuArt
(26.02.2007 в 14:23)
| | Никаких проблем не возникнет, т.к. функция file() читает строки файла в массив и не оставляет открытого дескриптора.
А уже затем из этого массива построчно происходит сравнение и запись в пустой файл, открытый fopen().
Собственно буфер здесь - это массив $lines. | |
|
|
|