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原理之错误抑制与内嵌HTML分析
May 02 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
php使用curl检测网页是否被百度收录的示例分享
Jan 31 PHP
php对数组排序代码分享
Feb 24 PHP
浅谈Eclipse PDT调试PHP程序
Jun 09 PHP
Yii框架关联查询with用法分析
Dec 02 PHP
php将字符串全部转换成大写或者小写的方法
Mar 17 PHP
PHP中判断文件存在使用is_file还是file_exists?
Apr 03 PHP
编写PHP程序检查字符串中的中文字符个数的实例分享
Mar 17 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
Mar 14 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
PHP模版引擎原理、定义与用法实例
Mar 29 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
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
JS实现根据密码长度显示安全条功能
2017/03/08 Javascript
Vue 2.0+Vue-router构建一个简单的单页应用(附源码)
2017/03/14 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
react学习笔记之state以及setState的使用
2017/12/07 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
使用gulp构建前端自动化的方法示例
2018/12/25 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
vue实现列表滚动的过渡动画
2020/06/29 Javascript
浅谈javascript如何获取文件后缀名
2020/08/07 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
在Python中使用CasperJS获取JS渲染生成的HTML内容的教程
2015/04/09 Python
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
Python实现简单生成验证码功能【基于random模块】
2018/02/10 Python
Python动态导入模块的方法实例分析
2018/06/28 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
2020/02/25 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
韩国三星集团旗下时尚品牌官网:SSF SHOP
2016/08/02 全球购物
德国街头和运动文化高品质商店:BSTN Store
2017/08/26 全球购物
Linux如何为某个操作添加别名
2013/03/01 面试题
应届生法律求职信
2013/10/22 职场文书
学校安全工作制度
2014/01/19 职场文书
《口技》教学反思
2014/02/21 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
国富论读书笔记
2015/06/26 职场文书