用<p>标签替换换行符</p>

时间:2014-03-04 21:54:38

标签: php

我有一个带有textarea的表单,我想将输入中的换行符更改为段落(使用<p>标记)。我正在使用explode和implode将\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)),但仍然无效。我的代码有什么问题,我该如何解决?

3 个答案:

答案 0 :(得分:3)

这样的事情会起作用:

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

答案 1 :(得分:2)

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

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

然后将它们包裹在<p>

foreach($paragraphs as $p)
{
    if(strlen($p) > 0)
    {
        echo "<p>$p</p>";
    }
}

答案 2 :(得分:2)

$(window).scroll(function() {
    if ($(this).scrollTop() > 50){  
        $('#logo, #header').fadeIn(1500);
        $('#header, #logo').addClass("sticky");

    }
    else{
        $('#logo, #header').fadeOut(1500);
        $('#header, #logo').removeClass("sticky");

    }
});

将文本分割为“ \ n”上的数组;

通过foreach添加“ p”标签;

检查'p'元素是否不为空(如果为空,则将其删除);

返回标记的文本;