Php 将换行符替换为<;p>;标签

Php 将换行符替换为<;p>;标签,php,Php,我有一个带有文本区域的表单,我想将输入中的换行符更改为段落(使用标记)。我使用explode and Inclode将\n替换为,但是如果一行中有两个换行符,那么最后会出现。我试图使用foreach循环遍历每个元素,并检查它是否为空,以解决这个问题,但它似乎根本不起作用。以下是我所拥有的: foreach($text as $value){ if($value!=''){ $newtext.='</p><p>'.$value; } } f

我有一个带有文本区域的表单,我想将输入中的换行符更改为段落(使用
标记)。我使用explode and Inclode将
\n
替换为
,但是如果一行中有两个换行符,那么最后会出现
。我试图使用foreach循环遍历每个元素,并检查它是否为空,以解决这个问题,但它似乎根本不起作用。以下是我所拥有的:

foreach($text as $value){
    if($value!=''){
        $newtext.='</p><p>'.$value;
    }
}
foreach($text作为$value){
如果($value!=''){
$newtext.='

'.$value; } }

这仍然为双倍间隔的事物提供了
。我还尝试用
替换
if($value!='')
!为空(trim($value))
但仍不起作用。我的代码出了什么问题,我如何修复它?

类似的东西可以工作:

$newtext = '<p>' . implode('</p><p>', array_filter(explode("\n", $textarea))) . '</p>';
$newtext=''。内爆(“

”,数组过滤器(explode(“\n“,$textarea)))。'

",;
  • 通过在换行符上拆分创建数组
    \n
  • 过滤掉空的元素
  • p
    标签连接在一起
  • 一种简单的方法是获取段落数组:

    $paragraphs = preg_split('/\n+/', $yourString);
    
    然后以
    的形式将它们回音出来:

    foreach($paragraphs as $p)
    {
        if(strlen($p) > 0)
        {
            echo "<p>$p</p>";
        }
    }
    
    foreach($p)
    {
    如果(strlen($p)>0)
    {
    回声“$p

    ”; } }
    函数text2paragraph($text){
    $array=explode(“\n”,$text);
    foreach($array作为$element){
    如果(strlen($element)>1){
    $taged.=''.$element.

    '; } } 返回$taged; }
    将文本拆分为“\n”上的数组

    通过foreach添加“p”标签

    检查“p”元素是否为空(如果为空元素,则将其移除)


    返回带标签的文本

    有一个函数可以添加

    标记,这可能就足够了。如果您想获得
    标记,您需要在换行符处拆分,并将这些块包装在
    ..

    中。
    function text2paragraph( $text ){
        
        $array =  explode("\n", $text);
        
    
        foreach($array as $element){
            if( strlen($element) > 1){
                $tagged .= '<p>'.$element.'</p>';
                
            }
        }
        return $tagged;
    }