Разбиение текста на части

Тема в разделе "PHP", создана пользователем LEXAlForpostl, 23 сен 2009.

Модераторы: latteo
  1. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    740
    Симпатии:
    226
    Здравствуйте.
    Имеем текст в перменной $txt.
    Как разбить на 1..n .txt файлов, чтобы в каждом файле было около 1100 символов.
    Т.е. скрипт работает, считает кол-во символов, доходит до отметки 1100 символов и затем "отрезает" текст на первой точке.
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    PHP:
    preg_match_all('/(.{0,1100}[^\.]*)\./si'$text$outtext);
     
    LEXAlForpostl и blet нравится это.
  3. antn

    antn Постоялец

    Регистр.:
    11 июл 2009
    Сообщения:
    104
    Симпатии:
    30
    PHP:
    preg_match_all('~.{1100}(?:.{0,300}?\\.\\s*)?|.+$~s'$text$m);
    var_dump($m);
     
  4. LEXAlForpostl

    LEXAlForpostl

    Регистр.:
    21 май 2008
    Сообщения:
    740
    Симпатии:
    226
    Здравствуйте.
    Подскажите, пожалуйста, как видоизменить регулярку, чтобы после точки в районе 300 символов добавилось слово "УРА", при этом только 1 раз.
    Пробовал:
    preg_replace('/(.{0,300}[^\.]*)\./si', "{1}УРА", $t);
    Так он заменяет каждые 300 символов, а мне всего лишь 1 раз нужно. И ещё, он вместо найденного фрагмента пишет {1}.

    UPD
    Реализовал поставленную задачу стандартные средствами РНР.
    Код:
    $t = "text";
    $tmp = substr($t, 0,300);
    $tmp = substr($tmp,0,strrpos ($tmp,"."));
    echo $t."<hr><hr>".str_replace ($tmp,$tmp."УРА!",$t);