За последние 24 часа нас посетили 53869 программистов и 1712 роботов. Сейчас ищут 804 программиста ...

Разбить строку

Тема в разделе "PHP для новичков", создана пользователем Битник, 16 ноя 2008.

  1. Битник

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

    С нами с:
    9 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Нужно разбить длинную строку, введённую пользователем, чтобы дизайн не пополз.

    Делаю так:

    PHP:
    1. <?
    2. $message = wordwrap($message, 20, ' ', 1);
    Или даже так:

    PHP:
    1. <?
    2. $message_array = explode(' ', $message);
    3.  
    4. for ($i=0; $i < count($message_array); $i++) {
    5.     if (strlen($message_array[$i]) > 20) {
    6.         $message_array[$i] = chunk_split($message_array[$i], '20', ' ');
    7.     }
    8. }
    9.  
    10. $message = implode(' ', $message_array);
    Строка-то разбивается, но при необходимости не переносится на другую строчку, так разбитай строка и остаётся на одной строке.
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
     
  3. Mete0

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

    С нами с:
    18 дек 2006
    Сообщения:
    272
    Симпатии:
    0
    Адрес:
    Gatchina
    PHP:
    1. <?
    2. $message  = wordwrap($message, 20, "<br />\n");
     
  4. Битник

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

    С нами с:
    9 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Неее, тогда у меня вся гостевая книга будет столбиком в 20 символов)
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    А что за длинные строки, которые не переводит на другую строку браузер? Может это ссылки?
     
  6. Битник

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

    С нами с:
    9 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Сейчас проверил, строку типа

    ооооооооооооооооооооооооооооооооооооо

    переводит, а

    привет!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    так и остаётся на одной строке

    привет!!!!!!!!!! !!!!!!!!!!!!! !!!!!!!!!!!!!! !!!!!!!!!!!

    словно, вставленный в тег <nobr>.
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Хм... обычно не переводит, если пробелы -- это &nbsp;
    Может проблема в том, что у блока не заданы размеры?
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
  9. Битник

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

    С нами с:
    9 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Лучше уж помогли бы.

    Для наглядности посмотрите, как себя ведёт строка со знаками восклицания (вопроса, точек) и знаками равно или простым повторением букв.

    PHP:
    1. <?
    2. $str = '!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!';
    3. $str = wordwrap($str, 20, ' ', 1);
    4. ?>
    5.  
    6. <table width="200" border="1">
    7.     <tr>
    8.         <td><?=$str;?></td>
    9.     </tr>
    10. </table>
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Битник
    Нормально разбивается и переносится. И буквы и прочие символы.
     
  11. Битник

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

    С нами с:
    9 фев 2007
    Сообщения:
    103
    Симпатии:
    0
    Это глюк браузеров, только FF нормально отображает =(