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 相关文章推荐
用Socket发送电子邮件
Oct 09 PHP
php中显示数组与对象的实现代码
Apr 18 PHP
用php实现选择排序的解决方法
May 04 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
Jun 13 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP rsa加密解密使用方法
Apr 27 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
Aug 27 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
Jan 04 PHP
PHP strripos函数用法总结
Feb 11 PHP
ThinkPHP框架实现的微信支付接口开发完整示例
Apr 10 PHP
php中对象引用和复制实例分析
Aug 14 PHP
laravel 实现关闭CSRF(全部关闭、部分关闭)
Oct 21 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/06/29 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
php利用单例模式实现日志处理类库
2014/02/10 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
php模拟服务器实现autoindex效果的方法
2015/03/10 PHP
[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结
2007/03/12 Javascript
JQUERY 对象与DOM对象之两者相互间的转换
2009/04/27 Javascript
js实现动态加载脚本的方法实例汇总
2015/11/02 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
AngularJS路由Ui-router模块用法示例
2017/05/29 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
[52:27]2018DOTA2亚洲邀请赛 3.31 小组赛B组 paiN vs Secret
2018/04/01 DOTA
python切片(获取一个子列表(数组))详解
2019/08/09 Python
Window系统下Python如何安装OpenCV库
2020/03/05 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
利用jupyter网页版本进行python函数查询方式
2020/04/14 Python
Python中使用threading.Event协调线程的运行详解
2020/05/02 Python
如何卸载python插件
2020/07/08 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
sort命令的作用和用法
2012/11/04 面试题
教师年终个人自我评价
2013/10/04 职场文书
通用求职信范文模板分享
2013/12/27 职场文书
天鹅的故事教学反思
2014/02/04 职场文书
《青海高原一株柳》教学反思
2014/04/25 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
涨工资申请书应该怎么写?
2019/07/08 职场文书
Go语言设计模式之结构型模式
2021/06/22 Golang
如何利用React实现图片识别App
2022/02/18 Javascript
JAVA 线程池(池化技术)的实现原理
2022/04/28 Java/Android