将\ n \ n格式化为\ n并在PHP中禁用唯一\ n(la reddit)

时间:2011-09-10 20:40:09

标签: php regex reddit

我正在为我的网站做同样的事情,就像我在reddit上看到的那样。 当你一次,它将无法工作,你将不得不做两个\ n \ n得到一个

我试过了:

$texte = preg_replace('#{\n}#', '', $texte);
$texte = preg_replace('#{\n}{\n}#', '\n', $texte);
$texte = nl2br($texte);

它不起作用......有人可以帮忙吗?

2 个答案:

答案 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个。