Удаление линий разрыва - PullRequest
1 голос
/ 11 июля 2011

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

alert('text

text);

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

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

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

Ответы [ 3 ]

1 голос
/ 11 июля 2011

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

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

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

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

0 голосов
/ 11 июля 2011

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

0 голосов
/ 11 июля 2011

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

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

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

...