Я ищу сделать то же самое для своего веб-сайта, как я видел на reddit. Когда вы \ n один раз, это не сработает, вам придется сделать два \ n \ n, чтобы получить один
Я попробовал это:
$texte = preg_replace('#{\n}#', '', $texte); $texte = preg_replace('#{\n}{\n}#', '\n', $texte); $texte = nl2br($texte);
и это не работает … кто-то может помочь?
Попробуй это:
$texte = preg_replace('#(\r\n|\r)#', "\n", $texte); $texte = preg_replace('#\n(?!\n)#', ' ', $texte); $texte = preg_replace('#\n\n#', "\n", $texte); $texte = nl2br($texte);
Первая строка нормализует окончания строки. Второй заменяет одиночное \n s пробелом. Третья строка заменяет double \n s на один.
$str = preg_replace('~(*BSR_ANYCRLF)\R(\R?)~', '$1', $str);
\R с параметром (*BSR_ANYCRLF) соответствует любой последовательности новой строки CRLF (*BSR_ANYCRLF) опцию в соответствии со всеми линиями Unicode).
\R(\R)? приведет к $1 = '\R' с двумя символами новой строки и $1 = '' с одной новой строкой.
Вышеизложенное, однако, полностью выведет новую строку, если у вас есть только одна. Это, вероятно, не то, что вы хотите. Вместо этого я предлагаю оставить одиночные новые строки в одиночку и преобразовать двойные символы новой строки в теги HTML <br /> :
$str = preg_replace('~(*BSR_ANYCRLF)\R{2}~', '<br />', $str);