用。替换换行符 标签

问题描述 投票:3回答:2

我有一个带有textarea的表单,我想将输入中的换行符更改为段落(使用<p>标记)。我正在使用爆炸和内爆用\n替换</p><p>,但如果你连续两次换行,你最终会得到</p><p></p><p>。我正在尝试使用foreach循环来遍历每个元素并检查它是否为空以对抗这个,但它似乎根本不起作用。这就是我所拥有的:

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

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

php
2个回答
4
投票

这样的东西会起作用:

$newtext = '<p>' . implode('</p><p>', array_filter(explode("\n", $textarea))) . '</p>';
  1. 通过拆分换行符\n来创建数组
  2. 过滤掉空元素
  3. p标签一起加入

2
投票

一个简单的方法是使用preg_split()来获取段落数组:

$paragraphs = preg_split('/\n+/', $yourString);

然后将它们包裹在<p>中:

foreach($paragraphs as $p)
{
    if(strlen($p) > 0)
    {
        echo "<p>$p</p>";
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.