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 中使用随机数的三个步骤
Oct 09 PHP
用PHP制作的意见反馈表源码
Mar 11 PHP
php adodb分页实现代码
Mar 19 PHP
php 格式化数字的时候注意数字的范围
Apr 13 PHP
php 生成唯一id的几种解决方法
Mar 08 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
Mar 04 PHP
PHP简单读取xml文件的方法示例
Apr 20 PHP
ubutu 16.04环境下,PHP与mysql数据库,网页登录验证实例讲解
Jul 20 PHP
详解PHP版本兼容之openssl调用参数
Jul 25 PHP
RSA实现JS前端加密与PHP后端解密功能示例
Aug 05 PHP
php array_map()函数实例用法
Mar 03 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
PHP5中虚函数的实现方法分享
2011/04/20 PHP
php继承的一个应用
2011/09/06 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
2016/03/21 PHP
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
2015/12/24 Javascript
Bootstrap媒体对象的实现
2016/05/01 Javascript
js获取Html元素的实际宽度高度的方法
2016/05/19 Javascript
JS实现兼容各种浏览器的获取选择文本的方法【测试可用】
2016/06/21 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
当vue路由变化时,改变导航栏的样式方法
2018/08/22 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
解决VUEX的mapState/...mapState等取值问题
2020/07/24 Javascript
vue+elementUI 实现内容区域高度自适应的示例
2020/09/26 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Python字符串逐字符或逐词反转方法
2015/05/21 Python
python中的迭代和可迭代对象代码示例
2017/12/27 Python
解决python3 网络请求路径包含中文的问题
2018/05/10 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
雪花秀美国官方网站:韩国著名草本护肤化妆品品牌
2016/10/19 全球购物
北承题目(C++)
2012/05/16 面试题
database面试题
2013/03/28 面试题
2014年社区教育工作总结
2014/12/02 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
2015年保险公司内勤工作总结
2015/05/23 职场文书
2016年学校招生广告语
2016/01/28 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
优胜劣汰,强者为王——读《鲁滨逊漂流记》有感
2019/08/15 职场文书
nginx请求限制配置方法
2021/07/09 Servers