用 contenteditable div 的结构替换数据库中的值

Replace value from database with the structure of a contenteditable div

我正在 contenteditable div 上打印 mysql 字段的值,我需要它采用与之对应的结构。使用相同的 divs 和换行符 br.

我试过phpnl2br功能,但它只会生成换行符br,所以对我来说效果不佳。我需要完整的结构。

例如:

<div id="textbox" contenteditable="true"><?php echo nl2br($text); ?></div>

其中 $text 是来自数据库的带有换行符的文本 \n

所以在执行nl2br的时候,全部改成br

我目前得到这个:

<div id="textbox" contenteditable="true">
  Line 1
  <br>
  Line 2
  <br>
  <br>
  Line 3
</div>

我需要得到这个:

<div id="textbox" contenteditable="true">
  Line 1
  <div>Line 2</div>
  <div>
    <br>
  </div>
  <div>Line 3</div>
</div>

这是在 contenteditable div.

上书写时自动生成的内容

快速尝试您之后的内容,输出看起来不错,但请确保它适用于您的后续内容。

我们的想法是将文本分成几行 - 从第一行文本开始,然后在 <div> 标记中添加每个后续行 - 如果该行是空白 - 然后将其设置为<br />...

$text = 'Line 1
Line 2

Line 3';

$lines = explode("\n",$text);
$output = array_shift($lines);
foreach ( $lines as $line ) {
    $output .= "<div>".($line?:"<br />")."</div>";
}

echo $output;

上面的示例给出了...

Line 1<div>Line 2</div><div><br /></div><div>Line 3</div>