Разбивка текста на блоки

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

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

    baboon Создатель

    Регистр.:
    3 июл 2008
    Сообщения:
    38
    Симпатии:
    6
    Здравствуйте!
    Возникла необходимость поразбивать тексты на блоки по 1000 символов. Написал такой скрипт:

    Код:
    $q = "$mytext"; //mytext - текст на 2800 символов
    
    $aaa = strlen("$q");
    $yowh = ceil($aaa / 1000);
    
    for($itr=0;$itr<$yowh;$itr++)
    {
    $startch = 1000 * $itr;
    $stopch = $startch + 1000;
    $string = substr("$q", $startch, $stopch);
    $message_body = $string;
    }
    Проблема в том, что в первом проходе он берет правильно с 0 по 1000 символ, а во втором с 1000 по 2800, вместо того, чтоб взять с 1000 по 2000. В третьем же он берет корректно с 2000 по 2800. В итоге получается, что последние 800 символов дублируются.

    Подскажите, пожалуйста, в чем может быть проблема? Т.е, почему на втором круге, вместо заданной 1000 берется 1800 символов?
     
  2. BlackPawn

    BlackPawn Постоялец

    Регистр.:
    19 мар 2009
    Сообщения:
    75
    Симпатии:
    27
    Почитай про функцию substr()
    Перейти по ссылке
    Второй параметр - это длина вырезаемой строки. Цикл должен выглядеть так:

    Код:
    for($itr=0;$itr<$yowh;$itr++)
    {
    $startch = 1000 * $itr;
    $string = substr("$q", $startch, 1000);
    $message_body = $string;
    }
    
     
    baboon нравится это.
  3. IceDragon

    IceDragon Писатель

    Регистр.:
    7 дек 2007
    Сообщения:
    4
    Симпатии:
    1
    можно воспользоваться функцией str_split

    она преобразовывает строку в массив строк с заданным размером

    Перейти по ссылке

    $arr2 = str_split($str, 1000);
     
    baboon нравится это.
  4. marsera

    marsera Прохожие

    попробуй функцию wordwrap, поможет
     
Статус темы:
Закрыта.