PHP函数nl2br()与自定义函数nl2p()换行用法分析


Posted in PHP onApril 02, 2016

本文实例讲述了PHP函数nl2br()与自定义函数nl2p()换行用法。分享给大家供大家参考,具体如下:

使用情景

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

先来看看nl2br() 函数吧。

定义和用法

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

一个简单的例子:

<?php
$str = "Welcome to 
3water.com";
echo nl2br($str);
?>

运行结果的HTML代码:

Welcome to <br />
3water.com

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>';
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP中上传大体积文件时需要的设置
Oct 09 PHP
php中模拟POST传递数据的两种方法分享
Sep 16 PHP
实现PHP多线程异步请求的3种方法
Jan 17 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
如何在旧的PHP系统中使用PHP 5.3之后的库
Dec 02 PHP
php仿微信红包分配算法的实现方法
May 13 PHP
php实现数据库的增删改查
Feb 26 PHP
Laravel5.4框架使用socialite实现github登录的方法
Mar 20 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 PHP
Yii 实现数据加密和解密
Mar 09 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
Apr 02 #PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
Apr 02 #PHP
PHP函数import_request_variables()用法分析
Apr 02 #PHP
PHP数组函数array_multisort()用法实例分析
Apr 02 #PHP
PHP使用http_build_query()构造URL字符串的方法
Apr 02 #PHP
PHP递归实现层级树状展开
Apr 01 #PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 #PHP
You might like
WINDOWS服务器安装多套PHP的另类解决方案
2006/10/09 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
laravel学习教程之存取器
2016/07/30 PHP
Yii2实现UploadedFile上传文件示例
2017/02/15 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
jquery(live)中File input的change方法只起一次作用的解决办法
2011/10/21 Javascript
jquery访问ashx文件示例代码
2014/08/11 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
JavaScript事件对象event用法分析
2018/07/27 Javascript
vue实现跳转接口push 转场动画示例
2019/11/01 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
在Chrome DevTools中调试JavaScript的实现
2020/04/07 Javascript
在vue中使用image-webpack-loader实例
2020/11/12 Javascript
[48:31]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第二场 12.17
2020/12/19 DOTA
Python牛刀小试密码爆破
2011/02/03 Python
Python cookbook(数据结构与算法)将序列分解为单独变量的方法
2018/02/13 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
html5拖拽应用记录及注意点
2020/05/27 HTML / CSS
法国包包和行李箱销售网站:Bagage24.fr
2020/03/24 全球购物
小学生自我评价范例
2013/09/24 职场文书
手术室护士自我鉴定
2013/10/14 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
论文指导教师评语
2014/04/28 职场文书
节能减耗标语
2014/06/21 职场文书
竞选班长演讲稿500字
2014/08/22 职场文书
网站出售协议书范文
2014/10/10 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
工程技术负责人岗位职责
2015/04/13 职场文书
小学数学教师研修日志
2015/11/13 职场文书
高中团支书竞选稿
2015/11/21 职场文书