
12.12.2009, 20:27
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
С нами:
9456866
Репутация:
979
|
|
Сообщение от LStr1ke
Ну так открывай файл через file(); в цикле каждую строку проверяй условием, кот. я привел.
Например:
PHP код:
<?php
$file_arr = file("text.txt");
foreach($file_arr as $line) {
strlen($line) <= 10 ? $line = '' : '' ;
echo $line."<br>";
}
?>
Скрипт выведет текстовый файл исключая сроки меньше или равные 10 симвалам.
в условии можно переделать на проверку условием и записем в файл, тоесть запишется новый файл, где не будет "маленьких" строк.
Возможно есть и более практичный вариант.
PS. Написал на скорую руку, нужно доделать до нормального вывода и вырезания "строки"
Твой код очень долго будет обрабатывать текст,регулярка будет работать как минимум в 5 раз быстрее.Разбивать фаил весов 15мб и потом его обходить foreach не есть хорошо.
|
|
|

12.12.2009, 21:01
|
|
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
С нами:
11278406
Репутация:
818
|
|
Вообще с трудом понял суть проблемы, а что если считать файл побайтово в переменную, далее переменную разбить на Строки
$strings = explode("\r\n", $file);
Далее сделать поиск в кадом ключе $strings[0], [1], [2]... искать кол-во символов "\n" если оно меньше 10, то делать unset($strings[$key]);
Потом склеиваем оставшиеся ключи и перезаписываем файл.
Надеюсь правильно понял суть вопроса =)
|
|
|

12.12.2009, 21:11
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
С нами:
9456866
Репутация:
979
|
|
Как раз таки нет 
Что имеем:
Не знаю.
Может быть, это еще хуже.
О чем это вы? встревожился Олег.
Просто я подумала, что лучше, сразу отнять жизнь у зверя или взять его беспомощного, сонного в плен и отнять свободу? Обречь всю жизнь сидеть в тесной клетке.
Ошибаетесь! торжествуя воскликнул Олег.
Если мы лишаем зверей свободы, то очень ненадолго: лишь на столько времени, чтобы успеть перевезти их в заранее намеченные места.
И там сейчас же возвращаем им свободу.
Наша цель акклиматизация и приручение полезных и красивых животных.
Мы развезем их по всем местам, где многие из них давно уже выбиты, а другие никогда не жили, но где подходящие для них условия жизни: климат, ландшафт, корма.
Из поколения в поколение мы будем переделывать их, у мирных зверей будем уничтожать древний страх перед человеком.
Вы только вообразите себе, Зенита, милая, стадо красавцев-оленей, пасущееся где-нибудь на Валдае или в Комарово под самым Ленинградом! Безбоязненно подбегает к вам этакий горный рогач, идет, чтобы вы его угостили из своих рук кусочком сахара, ласково потрепали по холке.
Олег! прервала его Зенита.
Знаете что, Олег? Вы не можете.
это.
ну.
С помощью регулярки нужно удалить эти строки.В конце каждой стоки стоит \n.Поидее в этих строках между \n и \n меньше 10 символов.
re.sub - замена по рег. выражению.
re.sub('\n.{1,10}\n')',"\n",self.text)
Другие виды переноса строки зарание убраны(\r\n).
Последний раз редактировалось rushter; 12.12.2009 в 21:16..
|
|
|

12.12.2009, 21:30
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
чото хитромудрая надуманность какая-то, вот так вот и пох на размеры файла:
PHP код:
<?php
$a = fopen('123.txt','r');
while (!feof($a)) {
$b = trim(fgets($a));
if (strlen($b)>10) echo $b . "<br>";
}
?>
Причем здесь регулярки - искренне не понял. Или залей куда-нибудь пример такого файла
|
|
|

12.12.2009, 21:33
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
С нами:
9456866
Репутация:
979
|
|
При том что в моём коде,в данном месте легче,удобне и быстрее использовать рег.выражение.И не спрашивай почему.
|
|
|

12.12.2009, 21:36
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
Бред, имхо
PS: Сорри, но правда бред
ни одна регулярка не будет работать быстрее while и strlen, имхо в квадрате
Тем более с большим файлом
Последний раз редактировалось Pashkela; 12.12.2009 в 21:40..
|
|
|

12.12.2009, 21:42
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
С нами:
9456866
Репутация:
979
|
|
Сообщение от Pashkela
Бред, имхо
PS: Сорри, но правда бред
ни одна регулярка не будет работать быстрее while и strlen, имхо в квадрате
Сообщение от rushter
При том что в моём коде,в данном месте легче,удобне и быстрее использовать рег.выражение.И не спрашивай почему.
Я прекрасно знаю что и где быстрее,скорость я замерял специально.+ ко всему файла с данным контентом для обработки нет,сам текст появляется после некой генерации и обработки текста.+ эту регулярку я смогу просто добавить к другой которая уже много другого ищет и заменяет на \n.
|
|
|

12.12.2009, 21:56
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами:
9649706
Репутация:
3338
|
|
понял, может это наведет на подсказку:
PHP код:
<?php
$a = fopen('123.txt','r');
while (!feof($a)) {
$b = trim(fgets($a));
if (preg_match('#.{10}#',$b)) echo $b . "<br>";
}
?>
где в 123.txt - твой текст
|
|
|

12.12.2009, 21:57
|
|
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
С нами:
8835027
Репутация:
150
|
|
PHP код:
$string = "\n".$string."\n";
$out = preg_replace("#\n(.{1,10})\n#","\n",$string);
echo $out;
|
|
|

12.12.2009, 22:00
|
|
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
С нами:
9456866
Репутация:
979
|
|
Сообщение от LStr1ke
PHP код:
$string = "\n".$string."\n";
$out = preg_replace("#\n(.{1,10})\n#","\n",$string);
echo $out;
Вот часть текста,спрашивалось зачем заново писать мою регулярку на другом языке ?
Сохраняйте в unix формате.
<?php
$string = ".
Как в сказке! задумчиво сказала Зенита, с трудом заставив себя отойти от клетки.
Но мне пора домой.
По дороге вы всё объясните мне? Правда? Конечно! С удовольствием! заторопился юноша, всё это время деликатно молчавший.
Он взял ее под руку, и товарищи ее по экспедиции, видевшие, как они шли по улице, решили, что она встретила здесь своего старого друга, так просто и хорошо они разговаривали.
Объяснение это было недлинно.
Всё дело.
начал юноша.
Простите, перебила Зенита.
А как вас зовут? Почти как вашего оленя: Олешком.
Или, если всерьез, Олегом.";
$out = preg_replace("#\n(.{1,20})\n#","\n",$string);
echo $out;
?>
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|