Архив рассылки -программирование на PHP




При этом, необходимо предположить...


При этом, необходимо предположить, что длина одной строки не более nnn символов (байт). Я думаю, что у нас не более 1024 символов в одной текстовой строке(1K).

$file_name='/home/roma/address.txt'; // 1 $file_new_name='/home/roma/address_new.txt'; // 2 $r=fopen($filename,'r'); // 3 $w=fopen($file_new_name,'w'); // 4 while($str=fgets($r,1024)) // 5 { $str=ereg_replace('213-','670-',$str); // 6 fputs($w,$str); // 7 } fclose($r); // 8 fclose($w); // 9

1. Определяем путь к файлу для чтения

2. Определяем путь к файлу для записи

3. Открываем файл для чтения

4. Открываем другой файл для записи

5. Начинам читать по одной строке в переменную $str из файла $r до тех пор, пока не достигнем конца файла (EOF — End Of File). Причем, строка читается либо до знака конца строки (EOL — End Of Line), либо до 1024-го символа. Это свойство функции чтения строки fgets().

6. Проводим замену 213 на 670.

7. Записываем строку $str в файл $w.

8, 9. После окончания цикла закрываем оба файла.

Немного длиннее получилось, но насколько правильнее!

Есть разные причины, по которым этот метод можно считать более правильным, чем предыдущий, но я сообщу вам самые веские.

Представьте, что у вас случайно файл оказался размером во много мегабайт: скрипт попросту не выполнится, так как для каждого скрипта отводится ограниченное пространство в оперативной памяти (по умолчанию это 5Mb, если не ошибаюсь).

Или подобную функцию вызвали сразу сто посетителей страницы (например, у вас сто модемных пользователей не спеша тянут с сайта mp3-музыку): у вас просто случится переполнение оперативной памяти сервера, и вы получите по мозгам от вашего администратора.

А еще мы во втором примере прочитали один файл, а записали результат обработки в другой: может случиться так, что произойдет ошибка во время записи данных в файл.









Начало    Назад    Вперед




Книжный магазин