2013-02-19 2 views
20

Я использую этот плагин для разбора BBcode bbcodeparserКак конвертировать п в HTML разрыва строки

, но он не имеет функций для преобразования \n в <br/>.

Я попытался добавить это:

replace(/\r?\n|\r/g, '<br>') 

... но это не сработало.

Как я могу реализовать функцию разрыва строки?

+0

пожалуйста, напишите jsfiddle ссылку здесь – 2013-02-19 01:17:14

+1

'ул = str.replace (/ \ п/г, '
');' – adeneo

+1

возможно дубликат [Javascript заменить символ новой строки] (http://stackoverflow.com/questions/2136648/javascript-replace-new-line-character) – Fraser

ответ

2

на самом деле, браузеры не лечат \r\n как реальная новую строку в PHP nl2br используются, где, как в JavaScript, вы можете использовать ниже функцию для nl2br() эквивалента.

function nl2br (str, is_xhtml) { 
var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>'; 
return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1' + breakTag + '$2');} 
+0

Что здесь делает $ 1 и $ 2? – Foreever

+0

Браузер обрабатывает его как новые строки, если вы укажете правильный стиль css. – Foreever

+0

@Foreever: '$ 1' и' $ 2' относится к первой и второй группе в regexp (группа - это что-то в '()'). Таким образом, код сохранит исходные части строки и просто вставляет теги '
' перед новой строкой. –

72

Если вы делаете это, чтобы показать новую строку и вернуть карету в html, вам не нужно делать это явно. Вы можете сделать это в css, установив пробел атрибут pre-line значение.

<span style="white-space: pre-line">@Model.CommentText</span> 
+0

Блестящий! Переполнение стека на помощь снова ... – daGUY

+0

edit: Хотя он говорит, что он не поддерживается в IE, похоже, что он работает нормально в IE8 + 11: http://caniuse.com/#search=white-space –

+1

pre-line will также разрушают последовательности пробелов. Если вы хотите сохранить пробелы, попробуйте предварительно обернуть. Существуют и другие варианты: https://developer.mozilla.org/en-US/docs/Web/CSS/white-space?v=example – KayakinKoder

Смежные вопросы