我有一个带有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))
,但它仍然没有用。我的代码有什么问题,我该如何解决?
这样的东西会起作用:
$newtext = '<p>' . implode('</p><p>', array_filter(explode("\n", $textarea))) . '</p>';
\n
来创建数组p
标签一起加入一个简单的方法是使用preg_split()
来获取段落数组:
$paragraphs = preg_split('/\n+/', $yourString);
然后将它们包裹在<p>
中:
foreach($paragraphs as $p)
{
if(strlen($p) > 0)
{
echo "<p>$p</p>";
}
}