За последние 24 часа нас посетили 18016 программистов и 1653 робота. Сейчас ищут 1425 программистов ...

Заменить множественные переводы строки на единичный

Тема в разделе "Регулярные выражения", создана пользователем PhantomSL, 20 июл 2009.

  1. PhantomSL

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

    С нами с:
    16 дек 2008
    Сообщения:
    15
    Симпатии:
    0
    Сначала думал обойтись без регулярных выражений:
    str_replace("\r\n\r\n", "\r\n", $_POST['mess_text'])
    но вариант, то не срабатывает (есть подозрение что не для всех браузеров в textarea нажатие Enter заменяется именно на "\r\n"), в некоторых случаях количество переводов строки уменьшается вдвое.

    Как заменить любое количество переводов строки на единственный?
     
  2. Dima4321

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

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Код (Text):
    1. <?php
    2.  
    3. ini_set('display_errors',1);
    4. error_reporting(E_ALL);
    5.  
    6.  
    7. $text='Hello
    8.  
    9. my friend.
    10. I ll be back.
    11.  
    12. Godbuy my mother.<br><br><br>Goodbuy my teacher.';
    13.  
    14. $poisk='/([\n\r\t\v]|<br>|<br \>){1,5}/si';
    15. $zamena='<br>';
    16.  
    17. $new=preg_replace($poisk,$zamena,$text);
    18.  
    19. echo $new;
    20.  
    21.  
    22.   ?>
     
  3. Jampire

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

    С нами с:
    22 авг 2009
    Сообщения:
    181
    Симпатии:
    0
    Адрес:
    Гомель
    Код (Text):
    1. $str = preg_replace('/<br\s*\/?>/s', "\r\n", $str);
    2. $str = preg_replace('/[\r?\n]{2,}/s', "\r\n", $str);