php 段落的nl2br

ergxz8rk  于 2022-11-21  发布在  PHP
关注(0)|答案(7)|浏览(115)
$variable = 'Afrikaans 
Shqip - Albanian  
Euskara - Basque';

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

$variable应变为:

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

jecbmhm31#

试试看:

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

hfyxw5xn2#

下面的代码应该可以做到这一点:

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

luaexgnf3#

请注意,对于其他建议,有些换行符无法捕捉。此函数适用于Windows、Linux或MacOS:

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

zhte4eai4#

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

shyt4zoc5#

<?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更快(至少根据我的经验)。请参阅下面的评论以了解更多信息。

vuktfyat

vuktfyat6#

请尝试:

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

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

cbjzeqam7#

我知道这是一个非常古老的主题,但我想强调的是,建议的解决方案在HTML世界中可能会有一些问题:
1.它们不会检查段落周围是否已经有p标签,这可能会导致额外的段落,至少有些浏览器会将其显示为额外的段落,这意味着<p>line1<p>line2</p>line3</p>将导致3个段落,这可能不是本意。
1.事实上,根据phrasing content的规范,p中有一堆标签是不应该存在的。

  1. pretextarea是您通常希望的标记。codesampkbdvar是其他常见值的示例,但从技术上讲,它可以是任何将white-space CSS属性设置为prepre-wrappre-linebreak-spaces中的一个或多个。
    1.它们通常只检查\r\n\r\n,而实际上有更多的符号,这意味着新行,它们也有各自的HTML实体,这很容易出现在HTML字符串中。
    为了在一定程度上“对抗”这些缺陷,我刚刚发布了一个nl2tag库,它也可以将新行“转换”为<li>项,并且具有“改进的”nl2br逻辑(主要是为了保留空格)。
    它还远远不够完美(查看自述文件了解限制),但应该可以满足相对简单的HTML字符串的需要。

相关问题