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操作Access类(PHP+ODBC+Access)
Jan 02 PHP
php开发留言板的CRUD(增,删,改,查)操作
Apr 19 PHP
从零开始学YII2框架(六)高级应用程序模板
Aug 20 PHP
php建立Ftp连接的方法
Mar 07 PHP
PHP开发中AJAX技术的简单应用
Dec 11 PHP
Yii模型操作之criteria查找数据库的方法
Jul 15 PHP
php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
Dec 07 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
Feb 15 PHP
Yii实现复选框批量操作实例代码
Mar 15 PHP
php上传excel表格并获取数据
Apr 27 PHP
php实现支持中文的文件下载功能示例
Aug 30 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
Apr 10 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
php 信息采集程序代码
2009/03/17 PHP
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
利用PHP抓取百度阅读的方法示例
2016/12/18 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
一个JavaScript用逗号分割字符串实例
2014/09/22 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
浅析JavaScript中break、continue和return的区别
2016/11/30 Javascript
Bootstrap3 多选和单选框(checkbox)
2016/12/29 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
Python交换变量
2008/09/06 Python
Python内置的字符串处理函数整理
2013/01/29 Python
Python生成不重复随机值的方法
2015/05/11 Python
python实现的系统实用log类实例
2015/06/30 Python
python字符串中的单双引
2017/02/16 Python
python Selenium爬取内容并存储至MySQL数据库的实现代码
2017/03/16 Python
Python实现的异步代理爬虫及代理池
2017/03/17 Python
python爬虫入门教程--快速理解HTTP协议(一)
2017/05/25 Python
python3操作mysql数据库的方法
2017/06/23 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
python按比例随机切分数据的实现
2019/07/11 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
python 用户交互输入input的4种用法详解
2019/09/24 Python
python 实现音频叠加的示例
2020/10/29 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
蒂娜商店:Tiina the Store
2019/12/07 全球购物
中药专业毕业自荐书范文
2014/02/08 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书