PHP заменяет двойной разрыв строки на <br> - PullRequest
1 голос
/ 31 марта 2012

У меня есть поле textarea, где я разрешаю пользователям печатать в виде обычного текста или HTML.

Я очищаю HTML с помощью HTMLPurify, но я хочу добавить функцию, которая поможет пользователям, которые не знают HTML (и, следовательно, используют обычный текст): преобразовывать двойные разрывы строк (\n\n, \r\r, * 1006). *, \r\n) в <br>. Если есть две пары двойных разрывов строк, превратите их в 2 <br> с и т. Д.

В основном:

Hi, this is some text with a SINGLE linebreak after it.
Here's some more text.

This is some text following a double line break.

Превратится в это:

Hi, this is some text with a SINGLE linebreak after it.Here's some more text.
This is some text following a double line break.

Использование nl2br() вызвало проблемы, связанные с использованием HTML, например ..

<ul>
<li>List item</li>
<li>List item</li>
<li>List item</li>
</ul>

Был превращен в

<ul>

<li>List item</li>

<li>List item</li>

<li>List item</li>

</ul>

, что привело к появлению дополнительных маркеров, когда их не должно быть.

Ответы [ 4 ]

1 голос
/ 31 марта 2012

Это может быть HTMLPurify, вместо этого попробуйте strip_tags () и используйте nl2br (), если это работает, то именно HTMLPurify определенно вызывает проблему.

Вы также можете попробовать nl2br () перед использованием HTMLPurify, таким образом, вы бы преобразовали все \n\r в <br /> перед HTMLPurify и уважали добавленные <br />.

1 голос
/ 31 марта 2012

Работает ли у вас nl2br?http://php.net/manual/en/function.nl2br.php

0 голосов
/ 29 мая 2012

Я нашел решение некоторое время назад, и теперь я отвечаю на один мой вопрос. HTMLPurify имеет опцию «автоматического создания параграфа»

AutoFormat.AutoParagraph

0 голосов
/ 31 марта 2012

Try nl2br () .

nl2br - вставляет разрывы строки HTML перед всеми новыми строками строки

Возвращает строку с ''или'
'вставляется перед всеми символами новой строки (\ r \ n, \ n \ r, \ n и \ r).

...