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 相关文章推荐
简单的页面缓冲技术
Oct 09 PHP
小偷PHP+Html+缓存
Dec 20 PHP
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
Apr 16 PHP
PHP基础之运算符的使用方法
Apr 28 PHP
php遍历目录与文件夹的多种方法详解
Nov 14 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
Yii学习总结之数据访问对象 (DAO)
Feb 22 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
yii2 commands模式以及配置crontab定时任务的方法
Aug 19 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 PHP
PHP实现获取url地址中顶级域名的方法示例
Jun 05 PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 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
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
2014/11/24 PHP
php微信高级接口调用方法(自定义菜单接口、客服接口、二维码)
2016/11/28 PHP
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
js中return false(阻止)的用法
2013/08/14 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
AngularJS实现表单验证
2015/01/28 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
基于JavaScript的操作系统你听说过吗?
2016/01/28 Javascript
ES6学习教程之对象字面量详解
2017/10/09 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
cropper js基于vue的图片裁剪上传功能的实现代码
2018/03/01 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
微信小程序自定义波浪组件使用方法详解
2019/09/21 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
[42:24]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第一场 11.01
2020/11/02 DOTA
Python学习笔记之解析json的方法分析
2017/04/21 Python
解决Python安装后pip不能用的问题
2018/06/12 Python
对pandas处理json数据的方法详解
2019/02/08 Python
如何使用Python进行OCR识别图片中的文字
2019/04/01 Python
python 遍历pd.Series的index和value
2019/11/26 Python
Python实现密码薄文件读写操作
2019/12/16 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
Python 之 Json序列化嵌套类方式
2020/02/27 Python
Python装饰器实现方法及应用场景详解
2020/03/26 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
Bootstrap File Input文件上传组件
2020/12/01 HTML / CSS
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
光电信息专业应届生求职信
2013/10/07 职场文书
中学生演讲稿
2014/04/26 职场文书
区域销售主管岗位职责
2014/06/15 职场文书
教师远程培训心得体会
2016/01/09 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
MongoDB支持的数据类型
2022/04/11 MongoDB
Windows server 2016服务器基本设置
2022/08/14 Servers