Определение "короткого" участка в тексе

Тема в разделе "PHP", создана пользователем dump1111, 5 сен 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dump1111

    dump1111

    Регистр.:
    7 июл 2009
    Сообщения:
    266
    Симпатии:
    8
    Вот есть текст. Строки его отделены переводами строк. Причём длина строк примерно одинакова, но есть фрагменты текста, где длина строк намного меньше чем длина строк основной части текста. И вот вопрос: как стредствами php удалить эти участки, с короткими строками?
     
  2. GrizliK

    GrizliK Создатель

    Регистр.:
    4 сен 2009
    Сообщения:
    47
    Симпатии:
    3
    Здравствуйте. Можно попробовать таким образом сделать
    PHP:
    $f file('path/to/file');
    $i 0;
    foreach(
    $f as $s){
        
    $i += strlen($s);
    }
    $avg_len $i count($f);
    $newfile fopen('path/to/newfile''w');
    foreach(
    $f as $s){
        if(
    strlen($s)>=$avg_len-20){
            
    fwrite($newfile$s."\n"); 
        }
    }
    fclose($newfile);
     
  3. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    735
    Симпатии:
    261
    Это просто удалит короткие строки, а ему, я так понял, надо удалить абзацы из коротких строк. Типа там стихи или еще что. Короче, области текста где нет ни одной длинной строки.

    Тогда надо как-то побить текст на нужные тебе участки
    PHP:
     $pars explode("\n\n"file_get_contents('text.txt'));
    потом для каждого участка найти, есть ли в нем длинная строка и если есть, то вывести, а если нет - просто пропустить.
    PHP:
    foreach($pars as $par) {
      
    $has_long 0;
      foreach(
    explode("\n"$par) as $s) if (strlen($s) > 20) {
         
    $has_long 1;
         break;
      }
      if (
    $has_long) echo $par "\n\n";
    }
    Признаки для отделения абзацев и строк внутри абзаца можно варьировать.
     
Статус темы:
Закрыта.