X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Добавить в кажудю строку
macbeth9
macbeth9
Topic Starter сообщение 2.11.2010, 0:16; Ответить: macbeth9
Сообщение #1


И так у меня есть список городов в txt формате, каждый город на отдельной строке,
Москва
Омск

мне нужно чтобы после каждого города стояло ",
Москва",
Омск",
В ручную добавлять это я сойду с ума, у меня 10000 городов, может подскажите как это реализовать?
Написал конечно не в тот раздел, но вдруг это можно сделать с помощью PHP ну или с помощью чего нибудь другого
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Licoric
Licoric
сообщение 2.11.2010, 2:04; Ответить: Licoric
Сообщение #2


С разделом угадал.
Сам будешь пробовать писать или в платный раздел обратишься? Думаю рублей в 100 скрипт можно оценить. Ибо так кодинга на пару строк.
Лично я не возьмусь, ибо опыта мало. Но в теории обычная регулярка, которая парсит файл и заменят "\n" на "",\n"
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
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
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
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
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
Mulder_hb
сообщение 2.11.2010, 13:26; Ответить: Mulder_hb
Сообщение #7


(unnormal @ 2.11.2010, 15:04) *
Ну если файл очень большой, предпочтительнее обработать его потоково.
file() - требует намного больше памяти.

А помещение в память двух файлов, один из которых очень большой, а второй к концу работы скрипта станет также очень большим займет меньше ресурсов? К тому же автору не нужно делать новый файл, ему нужно изменить старый, т.е. у вас не хватает функций копирования и удаления, которые также затратны для больших файлов. И того все усилия замены fopen на file сводятся на нет. Да и ваш вариант вернет также:
Москва
";Омск
";Киев
";Минск
";

потому что производится трансляция символа перевода строки.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
unnormal
unnormal
сообщение 2.11.2010, 13:34; Ответить: unnormal
Сообщение #8


(Mulder_hb @ 2.11.2010, 15:26) *
А помещение в память двух файлов, один из которых очень большой, а второй к концу работы скрипта станет также очень большим займет меньше ресурсов?

Занимаемая памать будет длиной в 1024 символа, т.к. будет идти обработка потока, а не всего файла.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 2.11.2010, 13:42; Ответить: Mulder_hb
Сообщение #9


(unnormal @ 2.11.2010, 15:34) *
Занимаемая памать будет длиной в 1024 символа, т.к. будет идти обработка потока, а не всего файла.

Согласен, но как я уже писал file() сам по себе работает быстрее, чем связка fopen()+fread(). Тут уже палка о двух концах: либо выполнить быстро, но с затратой больших ресурсов, либо выполнять долго, но с меньшими ресурсами.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 2.11.2010, 13:52; Ответить: Mulder_hb
Сообщение #10


Хотя ж нет. В некторых версиях пхп (не помню в каких) конструкция fread($file, 1024) заранее выделяет память под строку длинной 1024 символа. После считывания, если длинна строки меньше выделенной, то память высвобождается, а т.к. названия городов редко превышает даже 20 символов, то все усилия сводятся на нет. Вы ведь не можете знать, какая версия пхп у предполагаемого ресурса.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Если в сайт с одними ключами, которые там долго, добавить новую рубрику с новыми ключами
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


 



RSS Текстовая версия Сейчас: 20.4.2024, 0:46
Дизайн