nl2br用于段落

时间:2010-09-17 18:55:20

标签: php paragraph

$variable = 'Afrikaans 
Shqip - Albanian  
Euskara - Basque';

如何将每个新行转换为段落?

$variable应该成为:

<p>Afrikaans</p>
<p>Shqip - Albanian</p>
<p>Euskara - Basque</p>

6 个答案:

答案 0 :(得分:17)

试试这个:

$variable = str_replace("\n", "</p>\n<p>", '<p>'.$variable.'</p>');

答案 1 :(得分:4)

以下应该可以解决问题:

$variable = '<p>' . str_replace("\n", "</p><p>", $variable) . '</p>';

答案 2 :(得分:1)

$array = explode("\n", $variable);
$newVariable = '<p>'.implode('</p><p>', $array).'</p>'

答案 3 :(得分:1)

<?php
$variable = 'Afrikaans  
Shqip - Albanian   
Euskara - Basque'; 
$prep0 = str_replace(array("\r\n" , "\n\r") , "\n" , $variable);
$prep1 = str_replace("\r" , "\n" , $prep0);
$prep2 = preg_replace(array('/\n\s+/' , '/\s+\n/') , "\n" , trim($prep1));
$result = '<p>'.str_replace("\n", "</p>\n<p>", $prep2).'</p>'; 
echo $result;
/*
<p>Afrikaans</p>
<p>Shqip - Albanian</p>
<p>Euskara - Basque</p>
*/
?>

说明:

$ prep0和$ prep1:确保每一行以\ n。

结尾

$ prep2:删除多余的空格。保持换行。

$ result:添加p标签。

如果您不包含$ prep0,$ prep1和$ prep2,$ result将如下所示:

<p>Afrikaans  
</p>
<p>Shqip - Albanian   
</p>
<p>Euskara - Basque</p>

我认为不是很好。

另外,除非必须,否则不要使用preg_replace。在大多数情况下,str_replace更快(至少根据我的经验)。有关详细信息,请参阅以下评论。

答案 4 :(得分:0)

尝试:

$variable = 'Afrikaans
Shqip - Albanian  
Euskara - Basque';

$result = preg_replace("/\r\n/", "<p>$1</p>", $variable);
echo $result;

答案 5 :(得分:0)

注意,与其他建议相比,某些换行符无法捕获。 此功能可在Windows,Linux或MacOS上使用:

function nl2p($txt){
    return str_replace(["\r\n", "\n\r", "\n", "\r"], '</p><p>', '<p>' . $txt . '</p>');
}