$variable = 'Afrikaans
Shqip - Albanian
Euskara - Basque';
如何将每行换成段落?
$variable
应该成为:
<p>Afrikaans</p>
<p>Shqip - Albanian</p>
<p>Euskara - Basque</p>
尝试一下:
$variable = str_replace("\n", "</p>\n<p>", '<p>'.$variable.'</p>');
以下应完成的技巧:
$variable = '<p>' . str_replace("\n", "</p><p>", $variable) . '</p>';
$array = explode("\n", $variable);
$newVariable = '<p>'.implode('</p><p>', $array).'</p>'
<?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:删除多余的空格。保留换行符。
$$结果:添加p个标签。
如果不包括$ prep0,$ prep1和$ prep2,则$ result如下所示:
<p>Afrikaans
</p>
<p>Shqip - Albanian
</p>
<p>Euskara - Basque</p>
我认为不是很好。
此外,除非必须,否则不要使用preg_replace。在大多数情况下,str_replace更快(至少根据我的经验)。有关更多信息,请参见下面的注释。
尝试:
$variable = 'Afrikaans
Shqip - Albanian
Euskara - Basque';
$result = preg_replace("/\r\n/", "<p>$1</p>", $variable);
echo $result;
请注意,对于其他建议,某些换行符无法捕获。此功能适用于Windows,Linux或MacOS:
function nl2p($txt){
return str_replace(["\r\n", "\n\r", "\n", "\r"], '</p><p>', '<p>' . $txt . '</p>');
}