首先,将换行符替换为<br />
:
$post = nl2br($post_data['content']);
然后更换双<br />
带有结束和开始段落标记(原始换行符由nl2br
,所以我使用正则表达式,匹配所有样式的换行符):
$post = '<p>' . preg_replace('#(<br />[\r\n]+){2}#', '</p><p>', $post) . '</p>';
注意,这是XHTML语法,如果你想要HTML,请更改代码如下:
$post = nl2br($post_data['content'], false);
$post = '<p>' . preg_replace('#(<br>[\r\n]+){2}#', '</p><p>', $post) . '</p>';
Test:
$post_data['content'] = <<<TXT
line 1 paragraph 1,
line 2 paragraph 1.
line 3 paragraph 2,
line 4 paragraph 2,
line 5 paragraph 2.
TXT;
$post = nl2br($post_data['content'], false);
$post = '<p>' . preg_replace('#(<br>[\r\n]+){2}#', "</p>\n\n<p>", $post) . '</p>';
echo $post;
测试输出:
<p>line 1 paragraph 1,<br>
line 2 paragraph 1.</p>
<p>line 3 paragraph 2,<br>
line 4 paragraph 2,<br>
line 5 paragraph 2.</p>