本文作者:DurkBlue

php关于nl2p()函数的使用体会推荐

DurkBlue 2019-11-30 2483 抢沙发
php关于nl2p()函数的使用体会摘要: 如果向数据库输入内容时,没有用到富文本编辑器。而用的 textarea 标签的话,那么内容中的换行就会以 '\n' 的形式记录到数据库中。再者,如果把内容输出到浏览...

如果向数据库输入内容时,没有用到富文本编辑器。而用的 textarea 标签的话,那么内容中的换行就会以 '\n' 的形式记录到数据库中。再者,如果把内容输出到浏览器中时,浏览器不能识别 '\n' 换行符进行换行,会对用户的阅读造成一定的影响。虽然php提供了一个很好的解决函数 nl2br() ,但他只能插入一个<br> 标签,但如果我们想使用 <p></p> 标签换行的话,可以自定义一个函数 nl2p()

php nl2p() 自定义函数

注意:nl2p(),为一个自定义函数,因为它的功能与 nl2br() 相似,所以很多PHP编程者都喜欢命名为 nl2p()。

函数代码:

nl2p():将字符串中的换行符'\n',转换成 <p></p> 标签

function nl2p($string, $line_breaks = true, $xml = true){
    $string = str_replace(['<p>', '</p>', '<br>', '<br />'], '', trim($string));
    if ($line_breaks == true) {
        return '<p>' . preg_replace(array("/([\n]{2,})/i", "/([^>])\n([^<])/i"), array("</p>\n<p>", '<br' . ($xml == true ? ' /' : '') . '>'), $string) . '</p>';
    } else {
        return '<p>' . preg_replace("/([\n|\r\n])/i", "</p>\n<p>", $string) . '</p>';
    }}

参数说明:

$string:要处理的字符串

$line_breaks:为 TRUE 时,单行换行将转换为HTML换行标记<br>或<br/>。

$xml:如果为 true,使用 <br/> (xml语法)标签,否则使用 <br> (html语法)标签

php nl2p() 自定义函数使用示例

1、php把一段字符转换成 <p></p> 换行

代码:

<?php$str = "hello \n word!";echo nl2p($str,false);?>

复制

运行结果(需要查看源码):

<p>hello </p><p> word!</p>

复制

2、将所有字符串作用一段,并用<br/>换行

代码

<?php$str = "DurkBlue \n http://www.hepuhua.cn!";echo nl2p($str);?>

复制

浏览器输出样式:

DurkBlue
http://www.hepuhua.cn!

复制

查看源码:

<p>DurkBlue<br />http://www.hepuhua.cn!</p>

复制

3、使用<br>换行

代码:

<?php$str = "举头望明月, \n 低头思故乡!";echo nl2p($str,true,false);?>

复制

浏览器输出样式:

举头望明月,
低头思故乡!

复制

查看源码:

<p>举头望明月,<br>低头思故乡!</p>

复制

4、如果有两个连续的换行符,则另起一段.

代码:

<?php
$str = "不敢高声语, \n\n 恐惊天上人!";
echo nl2p($str,true,false);
?>

复制

浏览器输出:

不敢高声语,
恐惊天上人!

复制

查看源码:

<p>不敢高声语, </p><p> 恐惊天上人!</p>


此篇文章由DurkBlue博主亲自发布,转载请注明来处哟
文章投稿或转载声明

来源:DurkBlue版权归原作者所有,转载请保留出处。本站文章发布于 2019-11-30
温馨提示:文章内容系作者个人观点,不代表DurkBlue博客对其观点赞同或支持。

赞(0)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

阅读
分享

发表评论取消回复

快捷回复:
AddoilApplauseBadlaughBombCoffeeFabulousFacepalmFecesFrownHeyhaInsidiousKeepFightingNoProbPigHeadShockedSinistersmileSlapSocialSweatTolaughWatermelonWittyWowYeahYellowdog

评论列表 (暂无评论,2483人围观)参与讨论

还没有评论,来说两句吧...