我在MySql数据库中有这个文本:
0
我添加了p标签并且有效:
First paragraph very long.
Second paragraph very long.
Third paragraph.
当我回显到html页面时,我尝试添加换行符。我尝试了3种不同的东西。但它们似乎都不起作用:
$text = preg_replace("/\n/","<p>",$text);
$text = '<p>'.$text;
如果我在Safari浏览器中访问网络检查员,我会得到:
$text = preg_replace("/<\/p>/","</p>\n\n",$text);
$text = preg_replace("/<\/p>/","</p><br><br>",$text);
$text = nl2br($text);
echo $text;
我想有这个:
<p>First paragraph very long.</p><p>Second paragraph very long.</p><p>Third paragraph.</p>
即使我逃避它,我的正则表达式似乎也没有选择<p>First paragraph very long.</p>\n>\n
<p>Second paragraph very long.</p>\n>\n
<p>Third paragraph.</p>\n>\n
。我不明白。有什么问题?
答案 0 :(得分:2)
假设你需要换行控制字符(而不是html换行标记):
<?php
namespace Drupal\dino_roar\Jurrasic;
class RoarGenerator
{
public function getRoar($length)
{
return 'R' . str_repeat('O', $length) . 'AAARRR';
}
}
注意$text = "First paragraph very long.\nSecond paragraph very long.\nThird paragraph.";
$text = '<p>' . preg_replace("~\n~", "<p>\n\n</p>", trim($text)) . '</p>;
用于你有前导或尾随换行符,trim
用作分隔符,因为在处理html时~
是一个糟糕的选择,导致你逃脱所有在这个地方。
在上面的例子中并不明显,但是以你的一些reqex为例:
/
比阅读更容易:
preg_replace("~</p>~","</p>\n\n",$text);
此外,您不需要正则表达式,您可以使用preg_replace("/<\/p>/","</p>\n\n",$text);
:
str_replace
甚至爆炸/内爆:
$text = '<p>' .str_replace("\n", "<p>\n\n</p>", trim($text)) . '</p>;
如果是你想要的html换行符,那么你可以将替换参数编辑为:
$text = '<p>' . implode("</p>\n\n<p>", explode("\n", trim($text))) . '</p>';
在上面的任何一个中,但使用一些css可能会更好:
"</p><br><br><p>"
答案 1 :(得分:1)
您不需要正则表达式,简单的str_replace
有效(在您的示例中):
$text = str_replace( "</p><p>","</p>\n<p>",$text );