我正在为我的网站做同样的事情,就像我在reddit上看到的那样。 当你一次,它将无法工作,你将不得不做两个\ n \ n得到一个
我试过了:
$texte = preg_replace('#{\n}#', '', $texte);
$texte = preg_replace('#{\n}{\n}#', '\n', $texte);
$texte = nl2br($texte);
它不起作用......有人可以帮忙吗?
答案 0 :(得分:5)
$str = preg_replace('~(*BSR_ANYCRLF)\R(\R?)~', '$1', $str);
带有\R
选项的 (*BSR_ANYCRLF)
匹配任何CRLF类型的换行符序列(删除该选项以匹配所有Unicode换行符)。
\R(\R)?
将导致$1 = '\R'
有两个换行符,$1 = ''
会换一个换行符。
如果您只有一个,则上述内容将完全删除换行符。这可能不是你想要的。相反,我建议单独留下单个换行符并将双换行符转换为HTML <br />
标记:
$str = preg_replace('~(*BSR_ANYCRLF)\R{2}~', '<br />', $str);
答案 1 :(得分:2)
试试这个:
$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
个。第三行用一个替换双\n
个。