Помощник
|
Добавить в кажудю строку |
macbeth9
|
Сообщение
#1
|
||
|
|
||
|
|||
Licoric |
2.11.2010, 2:04;
Ответить: Licoric
Сообщение
#2
|
|
С разделом угадал.
Сам будешь пробовать писать или в платный раздел обратишься? Думаю рублей в 100 скрипт можно оценить. Ибо так кодинга на пару строк. Лично я не возьмусь, ибо опыта мало. Но в теории обычная регулярка, которая парсит файл и заменят "\n" на "",\n" |
|
|
Mulder_hb |
2.11.2010, 11:21;
Ответить: Mulder_hb
Сообщение
#3
|
|
[PHP]<?php
$f = fopen($fname = "file.txt", "r+t"); if (!is_resource($f)) { die("Ошибка открытия файла."); } $lines = explode("\n", fread($f, filesize($fname))); for ($i = 0; $i < count($lines); $i++) { $lines[$i] .= "\",\n"; } $string = implode("", $lines); fseek($f, 0); fwrite($f, $string); fclose($f); ?>[/PHP] |
|
|
ZhukV |
2.11.2010, 12:11;
Ответить: ZhukV
Сообщение
#4
|
|
Мне все же кажется, что лучше сделаьб на массиве. И скорее будет и ресурсов меньше:
[PHP] $file = file('1.txt'); $fopen = fopen('1.txt', 'w'); foreach($file as $k => $v){ $text = $v . "\";"; fputs($fopen, $text); } [/PHP] После этого можна закрыть файл по дескрипту, а можна и не закрывать, пхп сам его закроет по окончанию скрипта. |
|
|
Mulder_hb |
2.11.2010, 12:37;
Ответить: Mulder_hb
Сообщение
#5
|
|
ZhukVit
1. Зачем вы дважды открываете файл (file() и fopen())? 2. Ваш код вернет: Москва ";Омск ";Киев ";Минск "; а все потому, что вызов file() не обрабатывает символы перевода строки. 3. В пхп есть парадокс: несмотря на то, что функция file() работает быстрее, чем fopen(), связка explode()+fopen() работает быстрее, чем file()+trim(). Поэтому фишки вида: [PHP]$data = file("file.txt"); foreach ($data as $v) { trim($v); }[/PHP] Заведомо проигрывают конструкции: [PHP]$f = fopen($fname = "file.txt", "r+t"); $lines = explode("\n", fread($f, filesize($fname)));[/PHP] которая по сути делает тоже самое - в массиве lines будут чистые строки без символов перевода строк. |
|
|
unnormal |
2.11.2010, 13:04;
Ответить: unnormal
Сообщение
#6
|
|
Ну если файл очень большой, предпочтительнее обработать его потоково.
file() - требует намного больше памяти. [php] $file = fopen("sity.txt", "r"); $_file = fopen("_sity.txt", "w+"); while (!feof($file)) { $str = preg_replace("#\n#s", "\n\",", fread($file, 1024)); fwrite($_file, $str, strlen($str)); } fclose($file); fclose($_file); [/php] |
|
|
Mulder_hb |
2.11.2010, 13:26;
Ответить: Mulder_hb
Сообщение
#7
|
|
Ну если файл очень большой, предпочтительнее обработать его потоково. file() - требует намного больше памяти. А помещение в память двух файлов, один из которых очень большой, а второй к концу работы скрипта станет также очень большим займет меньше ресурсов? К тому же автору не нужно делать новый файл, ему нужно изменить старый, т.е. у вас не хватает функций копирования и удаления, которые также затратны для больших файлов. И того все усилия замены fopen на file сводятся на нет. Да и ваш вариант вернет также: Москва ";Омск ";Киев ";Минск "; потому что производится трансляция символа перевода строки. |
|
|
unnormal |
2.11.2010, 13:34;
Ответить: unnormal
Сообщение
#8
|
|
|
|
|
Mulder_hb |
2.11.2010, 13:42;
Ответить: Mulder_hb
Сообщение
#9
|
|
Занимаемая памать будет длиной в 1024 символа, т.к. будет идти обработка потока, а не всего файла. Согласен, но как я уже писал file() сам по себе работает быстрее, чем связка fopen()+fread(). Тут уже палка о двух концах: либо выполнить быстро, но с затратой больших ресурсов, либо выполнять долго, но с меньшими ресурсами. |
|
|
Mulder_hb |
2.11.2010, 13:52;
Ответить: Mulder_hb
Сообщение
#10
|
|
Хотя ж нет. В некторых версиях пхп (не помню в каких) конструкция fread($file, 1024) заранее выделяет память под строку длинной 1024 символа. После считывания, если длинна строки меньше выделенной, то память высвобождается, а т.к. названия городов редко превышает даже 20 символов, то все усилия сводятся на нет. Вы ведь не можете знать, какая версия пхп у предполагаемого ресурса.
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Если в сайт с одними ключами, которые там долго, добавить новую рубрику с новыми ключами | 2 | Tutich | 1225 | 16.4.2024, 8:27 автор: Tutich |
|
Восстановить сайт + добавить исходные данные | 5 | Portsmouth | 1988 | 21.5.2023, 7:23 автор: Skyworker |
|
Нужно добавить несколько компаний в Google Miй бiзнес | 1 | Barselona | 2007 | 10.8.2019, 10:19 автор: Barselona |
|
Нужно добавить картинки на сайт И видео |
2 | Ksardas777 | 4092 | 17.11.2018, 10:41 автор: Intuit89 |
|
Кто может добавить быстро ботов в подписчики в группу? Нужны боты быстро в группу? |
1 | nahalturu | 2896 | 29.9.2017, 14:05 автор: Smo_support |
Текстовая версия | Сейчас: 20.4.2024, 0:46 |