6

我目前在数据库中有很多笑话,这些笑话是用 nl2br() 格式化的,它产生......

This is just dummy text. Lorem ipsum dolor sit amet, consectetur adipiscing elit.
<br /><br />
Vestibulum gravida justo in arcu mattis lacinia. Mauris aliquet mi quis diam euismod blandit ultricies ac lacus.
<br /><br />
Aliquam erat volutpat. Donec sed nisi ac velit viverra hendrerit.
<br />
Praesent molestie augue ligula, quis accumsan libero.

我需要一个 php 函数来转换<br /><br />为 a <p></p>,如果只有 1<br />则不要管它。还修剪任何空白

所以最终的结果将是......

<p>This is just dummy text. Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<p>Vestibulum gravida justo in arcu mattis lacinia. Mauris aliquet mi quis diam euismod blandit ultricies ac lacus. </p>
Aliquam erat volutpat. Donec sed nisi ac velit viverra hendrerit.<br />
Praesent molestie augue ligula, quis accumsan libero.

有人可以指出我正确的方向或给我一个简单的功能吗?谢谢

4

5 回答 5

10

使用 PHP 的字符串替换功能将所有内容替换<br /><br /></p><p>. http://php.net/manual/en/function.str-replace.php

示例代码:

$stringWithBRs = nl2br($originalString)
$stringWithPs = str_replace("<br /><br />", "</p>\n<p>", $stringWithBRs);
$stringWithPs = "<p>" . $stringWithPs . "</p>";

或者,您甚至可以在不调用 nl2br() 函数的情况下使用以下代码。

$stringWithPs = str_replace("\n\n", "</p>\n<p>", $originalString);
$stringWithPs = "<p>" . $stringWithPs . "</p>";
于 2013-02-16T00:00:06.047 回答
3

只需直接转换原始字符串:

$text=str_replace("<br /><br />", "</p><p>", $original_string);

在 HTML 中,像这样:

<p>
 <?php echo $text; ?>
</p>
于 2014-01-29T17:39:40.107 回答
3

单线:

$sNewString = implode('</p><p>',explode('<br /><br />', nl2br($sOriginalString)))

解释:

  1. 将换行符转换为 br
  2. 通过这些 br 将字符串拆分为数组
  3. 通过在每个数组项之间粘贴 P 标签将数组粘回字符串
于 2016-02-23T12:15:49.250 回答
0
$new = '';
foreach(explode("\n<br /><br />\n", $text) as $p) // split by double newlines
    $new.= "<p>$p</p>\n"; // and convert each part to a paragraph


// or if you want to keep it in a single line
$new = join(array_map(function($p){return "<p>$p</p>\n";}, explode("\n<br /><br />\n", $text)));
于 2014-07-26T09:19:01.903 回答
0

试试看

$old_string = preg_replace("/[\r\n]/","</p><p>",$old_string);
$new_string = "<p>" . $old_string . "</p>";
echo $new_string;
于 2018-03-09T19:09:01.767 回答