За последние 24 часа нас посетили 15048 программистов и 1771 робот. Сейчас ищут 1466 программистов ...

Неубиваемый перенос строки

Тема в разделе "Регулярные выражения", создана пользователем AAMD, 6 дек 2015.

  1. AAMD

    AAMD Новичок

    С нами с:
    6 дек 2015
    Сообщения:
    3
    Симпатии:
    0
    Появилась необходимость вставить текст, полученный из базы данных (а до того - из текстового поля) в функцию javascript. Ну, чтобы, например, при нажатии кнопки нужный текст появился в нужном месте. Примерно так:

    Код (PHP):
    1. echo "<script> 
    2. ...
    3. var text = \"" . $text . "\";
    4. ...
    5. </script>"; 
    Где $text - тот самый текст, полученный из БД. Но в тексте от пользователя вполне могут быть переносы строк. ОК, заменяем перенос строки на пробел:

    Код (PHP):
    1. $text = str_replace("\n", " ", $text); 
    Смотрим в исходный код html - все замечательно, получаем что-то вроде такого:

    Код (PHP):
    1. <script>
    2. ...
    3. var text = "Мой текст";
    4. ...
    5. </script>
    Текст преобразуется в одну строку, даже если был изначально перенос строки. Но кнопка не работает! Получаем в консоли ошибку вроде такой:
    [​IMG]
    Строка оказалась перенесена, хотя в исходном коде так:
    [​IMG]

    Пробовал и разбить текст, как массив (explode("\n", $text);) и потом его обратно собирать в строку - то же, что и в примере выше, пробовал подставить вместо переноса знак экранирования, чтобы js считал его единой строкой - не выходит: "\" ставится ПОСЛЕ переноса...
    Почему в исходном коде html все красиво, а при попытке браузером выполнить код js "воскресает" перенос строки?..

    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  3. AAMD

    AAMD Новичок

    С нами с:
    6 дек 2015
    Сообщения:
    3
    Симпатии:
    0
    Пробовал. Этого символа там и нет: в исходном html коде так же сохраняется перенос.

    PS Странно, что первым делом не посоветовали trim() - его я в первую очередь попробовал - не работает, так же, как и rtrim()

    Добавлено спустя 30 минут 38 секунд:
    О! надо сделать так:
    Код (PHP):
    1. str_replace("\r\n", " ", $text); 
    PHP, JavaScript, SQL и другой код пишите внутри тегов
    Код ( (Unknown Language)):
    1. [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    и этот и тот переносы удалить.
     
  5. AAMD

    AAMD Новичок

    С нами с:
    6 дек 2015
    Сообщения:
    3
    Симпатии:
    0
    Да, уже допер ))) Спасибо!
     
  6. Conus

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

    С нами с:
    21 окт 2015
    Сообщения:
    92
    Симпатии:
    0
    да она те новый массив строчит а не перенос
    он определяет новую строку