用 <p> 标签替换换行符

use*_*270 4 php

我有一个带有 textarea 的表单,我想将输入的换行符更改为段落(使用<p>标签)。我使用explode 和implode 替换\n</p><p>,但是如果您连续有两个换行符,则以</p><p></p><p>. 我正在尝试使用 foreach 循环来遍历每个元素并检查它是否为空以解决这个问题,但它似乎根本不起作用。这是我所拥有的:

foreach($text as $value){
    if($value!=''){
        $newtext.='</p><p>'.$value;
    }
}
Run Code Online (Sandbox Code Playgroud)

这仍然</p><p></p><p>适用于双倍间距的东西。我也尝试替换if($value!='')!is_null(trim($value)),但它仍然不起作用。我的代码有什么问题,我该如何解决?

Abr*_*ver 7

像这样的事情会起作用:

$newtext = '<p>' . implode('</p><p>', array_filter(explode("\n", $textarea))) . '</p>';
Run Code Online (Sandbox Code Playgroud)
  1. 通过在换行符上拆分来创建数组 \n
  2. 过滤空元素
  3. p标签连接在一起