nl2br()与nl2p()函数,php在字符串中的新行(\n)之前插入换行符

nl2br()与nl2p()函数,php在字符串中的新行(\n)之前插入换行符

   使用情景

很多场合我们只是简单用textarea获取用户的长篇输入,而没有用编辑器。用户输入的换行以“\n”的方式入库,输出的时候有时候会没有换行,一大片文字直接出来了。这个时候可以根据库里的“\n”给文字换行。PHP有自带的函数nl2br(),我们也可以自定义函数nl2p()。

先来看看nl2br() 函数吧。

定义和用法

nl2br() 函数在字符串中的每个新行 (\n) 之前插入 HTML 换行符 (<br />)。

一个简单的例子:

     <?php
    $str = "Welcome to
    www.nowamagic.net";
    echo nl2br($str);
    ?>

运行结果的HTML代码:
    Welcome to <br />
    www.nowamagic.net

nl2p
nl2br 有个缺点,比如要用CSS做到段落缩进就比较麻烦,这个时候就需要 nl2p 了。将br换行换成段落p换行,比较简单是直接替换:

<?php function nl2p($text) { return "<p>" . str_replace("\n", "</p><p>", $text) . "</p>"; } ?>

比较详细的函数,可以试下:

/**
     * Returns string with newline formatting converted into HTML paragraphs.
     *
     * @param string $string String to be formatted.
     * @param boolean $line_breaks When true, single-line line-breaks will be converted to HTML break tags.
     * @param boolean $xml When true, an XML self-closing tag will be applied to break tags (<br />).
     * @return string
     */
    function nl2p($string, $line_breaks = true, $xml = true)
    {
        // Remove existing HTML formatting to avoid double-wrapping things
        $string = str_replace(array('<p>', '</p>', '<br>', '<br />'), '',$string);
        // It is conceivable that people might still want single line-breaks
        // without breaking into a new paragraph.
        if ($line_breaks == true)
            return '<p>'.preg_replace(array("/([\n]{2,})/i","/([^>])\n([^<])/i"), array("</p>\n<p>", '<br'.($xml == true ? ' /' :'').'>'), trim($string)).'</p>';
        else
            return '<p>'.preg_replace("/([\n]{1,})/i", "</p>\n<p>", trim($string)).'</p>';
    }

https://www.cnblogs.com/hejianrong/p/5802010.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113541.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 图片相似图片搜索_搜图网

    图片相似图片搜索_搜图网十大相似图片搜索网站(以图搜图)  2011-04-1321:07:56|  分类: 默认分类 |  标签:以图搜图  图片搜索  搜图  百度搜图  搜索引擎  |举报|字号 订阅    下载LOFTER客户端  如何凭着一张现有图片找出它的原始图

    2025年10月21日
    4
  • 闫学灿acwing_二叉树外部路径内部路径

    闫学灿acwing_二叉树外部路径内部路径Ural 大学有 N 名职员,编号为 1∼N。他们的关系就像一棵以校长为根的树,父节点就是子节点的直接上司。每个职员有一个快乐指数,用整数 Hi 给出,其中 1≤i≤N。现在要召开一场周年庆宴会,不过,没有职员愿意和直接上司一起参会。在满足这个条件的前提下,主办方希望邀请一部分职员参会,使得所有参会职员的快乐指数总和最大,求这个最大值。输入格式第一行一个整数 N。接下来 N 行,第 i 行表示 i 号职员的快乐指数 Hi。接下来 N−1 行,每行输入一对整数 L,K,表示 K 是 L 的直接

    2022年8月9日
    10
  • navicat 15 for mysql激活密钥 3月最新注册码

    navicat 15 for mysql激活密钥 3月最新注册码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    544
  • 御用导航提示提醒_又现神操作!广西两车主开车走楼梯,车主:导航让我走的!…[通俗易懂]

    御用导航提示提醒_又现神操作!广西两车主开车走楼梯,车主:导航让我走的!…[通俗易懂]大家有没有被导航坑坏的经历?近日柳州市某小区内有两辆小轿车跟着导航走结果都开到了同一楼梯处卡在了同样的地方……2月12日上午,在柳州市柳江区柳西新城小区,一司机开车跟着导航走,结果将车子开到楼梯上了。据网友描述,事故发生在该小区31栋平台上,一辆红色小轿车的四个车轮都在楼梯上,走下楼梯直达小区门口。随后,司机用其他车子把他的汽车拉起来,自己也没有受伤。无独有偶此前就发生过一样的事…

    2022年5月7日
    171
  • Android–使用Gson解析JSON数据

    Android–使用Gson解析JSON数据

    2022年3月3日
    50
  • 在SQL存储过程中给条件变量加上单引号

    在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL)@d_start

    2021年12月24日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号