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 相关文章推荐
如何将数据从文本导入到mysql
Oct 09 PHP
PHP DataGrid 实现代码
Aug 12 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
Feb 01 PHP
PHP array_multisort() 函数的深入解析
Jun 20 PHP
浅析PHP原理之变量(Variables inside PHP)
Aug 09 PHP
php实现把数组按指定的个数分隔
Feb 17 PHP
php伪静态之APACHE篇
Jun 02 PHP
php中HTTP_REFERER函数用法实例
Nov 21 PHP
php 伪造ip以及url来路信息方法汇总
Nov 25 PHP
PHP文件缓存类示例分享
Jan 30 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 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到5.3.3的过程及注意事项
2010/10/12 PHP
提交表单后 PHP获取提交内容的实现方法
2016/05/25 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
Jquery.LazyLoad.js修正版下载,实现图片延迟加载插件
2011/03/12 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
深入理解Node module模块
2018/03/26 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
微信小程序遍历Echarts图表实现多个饼图
2019/04/25 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
探索浏览器页面关闭window.close()的使用详解
2020/08/21 Javascript
python paramiko实现ssh远程访问的方法
2013/12/03 Python
python发送伪造的arp请求
2014/01/09 Python
详细解析Python中的变量的数据类型
2015/05/13 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
python爬取网页转换为PDF文件
2018/06/07 Python
Python深拷贝与浅拷贝用法实例分析
2019/05/05 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
2020/09/04 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
Python confluent kafka客户端配置kerberos认证流程详解
2020/10/12 Python
查找适用于matplotlib的中文字体名称与实际文件名对应关系的方法
2021/01/05 Python
教师个人自我鉴定
2014/02/08 职场文书
司法建议书范文
2014/05/13 职场文书
部门2014年度工作总结
2014/11/12 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python