HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 12.12.2009, 20:27
rushter
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 не есть хорошо.
__________________
Blog
 
Ответить с цитированием

  #2  
Старый 12.12.2009, 21:01
b3
Постоянный
Регистрация: 05.12.2004
Сообщений: 647
С нами: 11278406

Репутация: 818


По умолчанию

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

Надеюсь правильно понял суть вопроса =)
 
Ответить с цитированием

  #3  
Старый 12.12.2009, 21:11
rushter
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).
__________________
Blog

Последний раз редактировалось rushter; 12.12.2009 в 21:16..
 
Ответить с цитированием

  #4  
Старый 12.12.2009, 21:30
Pashkela
Динозавр
Регистрация: 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>";
}
?>
Причем здесь регулярки - искренне не понял. Или залей куда-нибудь пример такого файла
 
Ответить с цитированием

  #5  
Старый 12.12.2009, 21:33
rushter
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
С нами: 9456866

Репутация: 979


По умолчанию

При том что в моём коде,в данном месте легче,удобне и быстрее использовать рег.выражение.И не спрашивай почему.
__________________
Blog
 
Ответить с цитированием

  #6  
Старый 12.12.2009, 21:36
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
С нами: 9649706

Репутация: 3338


По умолчанию

Бред, имхо

PS: Сорри, но правда бред

ни одна регулярка не будет работать быстрее while и strlen, имхо в квадрате

Тем более с большим файлом

Последний раз редактировалось Pashkela; 12.12.2009 в 21:40..
 
Ответить с цитированием

  #7  
Старый 12.12.2009, 21:42
rushter
Reservists Of Antichat - Level 6
Регистрация: 23.05.2008
Сообщений: 756
С нами: 9456866

Репутация: 979


По умолчанию

Цитата:
Сообщение от Pashkela  
Бред, имхо

PS: Сорри, но правда бред

ни одна регулярка не будет работать быстрее while и strlen, имхо в квадрате
Цитата:
Сообщение от rushter  
При том что в моём коде,в данном месте легче,удобне и быстрее использовать рег.выражение.И не спрашивай почему.
Я прекрасно знаю что и где быстрее,скорость я замерял специально.+ ко всему файла с данным контентом для обработки нет,сам текст появляется после некой генерации и обработки текста.+ эту регулярку я смогу просто добавить к другой которая уже много другого ищет и заменяет на \n.
__________________
Blog
 
Ответить с цитированием

  #8  
Старый 12.12.2009, 21:56
Pashkela
Динозавр
Регистрация: 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 - твой текст
 
Ответить с цитированием

  #9  
Старый 12.12.2009, 21:57
LStr1ke
Постоянный
Регистрация: 29.07.2009
Сообщений: 400
С нами: 8835027

Репутация: 150
По умолчанию

PHP код:
$string "\n".$string."\n";
$out preg_replace("#\n(.{1,10})\n#","\n",$string);
echo 
$out
 
Ответить с цитированием

  #10  
Старый 12.12.2009, 22:00
rushter
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;
?>
__________________
Blog
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi]/[Pascal] Задай вопрос, получи ответ Isis С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 6762 17.06.2010 21:23
Всё о беспороводном соединении на кпк и смартфонах! Задай вопрос - получи ответ! ARMENIN Беспроводные технологии/Wi-Fi/Wardriving 2 02.11.2008 00:40



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.