За последние 24 часа нас посетили 60825 программистов и 1774 робота. Сейчас ищут 1789 программистов ...

Не могу разобраться wordwrap

Тема в разделе "PHP для новичков", создана пользователем ssh, 26 авг 2009.

  1. ssh

    ssh Активный пользователь

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    Нашёл функцию для вставки перевода строки для слова которое будет больше 50-ти символов в utf-8.
    Так вот, функция работает, но бывает что в БД добавляется текст и перед текстом перевод строки, пока не могу разобраться почему так происходит...


    function unicode_wordwrap($str, $len=50, $break="\n", $cut=false){
    if(empty($str)) return "";

    $pattern="";
    if(!$cut)
    $pattern="/(\S{".$len."})/u";
    else
    $pattern="/(.{".$len."})/u";

    return preg_replace($pattern, "\${1}".$break, $str);
    }
     
  2. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP:
    1. <?php
    2.    function utf8_wordwrap($str, $width = 75, $break = "\n") // wordwrap() with utf-8 support
    3.     {
    4.         $str = preg_split('#[\s\n\r]+#', $str);
    5.         $len = 0;
    6.         foreach ($str as $val)
    7.         {
    8.             $val .= ' ';
    9.             $tmp = mb_strlen($val, 'utf-8');
    10.             $len += $tmp;
    11.             if ($len >= $width)
    12.             {
    13.                 $return .= $break . $val;
    14.                 $len = $tmp;
    15.             }
    16.             else
    17.                 $return .= $val;
    18.         }
    19.         return $return;
    20.     }
    21. ?>
     
  3. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
  4. ssh

    ssh Активный пользователь

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    Apple
    $tmp = mb_strlen($val, 'utf-8');
    Fatal error: Call to undefined function mb_strlen()
     
  5. Apple

    Apple Активный пользователь

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Ну так установите расширение MBString
     
  6. ssh

    ssh Активный пользователь

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    Apple
    Использовал данную вами функцию,

    вставил переменную после неё
    $text = utf8_wordwrap($text);

    текст не переносится.
     
  7. ssh

    ssh Активный пользователь

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    http://www.greywyvern.com/code/php/htmlwrap.phps - взял отсюда, сработало, правда большая она, но под пивко нормально.

    Кстати когда вводишь много "ЫЫЫЫЫЫЫЫЫ" - то длинны в 50 символов не хватает, пришлось урезать до 42-х :)
     
  8. ssh

    ssh Активный пользователь

    С нами с:
    15 апр 2009
    Сообщения:
    164
    Симпатии:
    0
    А когда вводишь "ЩЩЩЩЩЩЩ" то и 42-х не хватает, кошмар!
     
  9. TheShock

    TheShock Активный пользователь

    С нами с:
    30 май 2009
    Сообщения:
    1.255
    Симпатии:
    0
    Адрес:
    Київ
    используй моноширинные шрифты))