Удаление линий разрыва

Я задавал этот вопрос раньше, но, похоже, я не получил правильного ответа. У меня проблема с новыми строками в тексте. Javascript и jQuery не любят такие вещи:

alert('text

text);

Когда я извлекаю информацию из таблицы базы данных, в которой есть линия разрыва, JS и jQuery не могут правильно ее проанализировать. Мне сказали использовать n2lbr(), но это не работает, когда кто-то использует «shift+enter» или «enter» при вводе текста в сообщение (вот где я получаю эту проблему). Я все еще получаю отдельные строки при его использовании. Кажется, что тег BR правильно применяется после разрыва строки, но он все равно оставляет там разрыв.

Может ли кто-нибудь помочь здесь? Я получаю данные сообщения с помощью jQuery и отправляю их в файл PHP в хранилище, поэтому я хотел бы решить проблему там.

Обычно это не было бы проблемой, но я хочу получить все сообщения пользователей, когда они сначала загружают свой почтовый ящик, а затем отображать их через jQuery, когда они выбирают определенное сообщение.


person Phillip    schedule 11.07.2011    source источник


Ответы (3)


Вы можете использовать регулярное выражение для замены новых строк пробелами:

alert('<?php preg_replace("/[\n\r\f]+/m","<br />", $text); ?>');

Модификатор m будет совпадать между новыми строками, что в данном случае, я думаю, важно.

редактировать: извините, не понял, что вам действительно нужны <br /> элементы, а не пробелы. обновленный ответ соответственно.

edit2: как и @LainIwakura, я допустил ошибку в своем регулярном выражении, отчасти из-за предыдущего редактирования. мое новое регулярное выражение заменяет только символы CR/NL/LF, а не пробельные символы (\s). обратите внимание, что есть набор символов разрыва строки Unicode, которые я не признал... если вам нужно разобраться с этим, вы можете прочитать о синтаксисе regexp для юникода

person smcphill    schedule 11.07.2011
comment
Это сделало это! Думаю, в других примерах отсутствовала буква «м». Это именно то, что мне было нужно. Приму, когда смогу. - person Phillip; 11.07.2011
comment
Слава Богу, Stackoverflow существует. Просто снова сэкономил мое время! - person Boris Delormas; 10.01.2012

Редактировать: Хорошо, после того, как я много споткнулся, я считаю, что вы хотите этого:

$str = preg_replace('/\n+/', '<br />', $str);

И с этим я иду спать... слишком поздно, чтобы отвечать на вопросы.

person LainIwakura    schedule 11.07.2011
comment
Не сработало, все еще возвращается с линией разрыва на месте. preg_replace('/\s\s+/','',nl2br($_POST['сообщение'],false)); - person Phillip; 11.07.2011

Обычно я использую json_encode() для форматирования строки для использования в JavaScript, так как он делает все необходимое для создания JS-допустимое значение.

person binaryLV    schedule 11.07.2011