我有一个带有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))
,但仍然无效。我的代码有什么问题,我该如何解决?
答案 0 :(得分:3)
这样的事情会起作用:
$newtext = '<p>' . implode('</p><p>', array_filter(explode("\n", $textarea))) . '</p>';
\n
p
代码答案 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'元素是否不为空(如果为空,则将其删除);
返回标记的文本;