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 相关文章推荐
在JavaScript中调用php程序
Mar 09 PHP
sql注入与转义的php函数代码
Jun 17 PHP
php curl获取网页内容(IPV6下超时)的解决办法
Jul 16 PHP
php基于str_pad实现卡号不足位数自动补0的方法
Nov 12 PHP
php自定义错误处理用法实例
Mar 20 PHP
php实现用已经过去多长时间的方式显示时间
Jun 05 PHP
php中Snoopy类用法实例
Jun 19 PHP
如何使用PHP给图片加水印
Oct 12 PHP
PHP调用微博接口实现微博登录的方法示例
Sep 22 PHP
针对PHP开发安全问题的相关总结
Mar 22 PHP
PHP生成短网址的思路以及实现方法的详解
Mar 25 PHP
php7连接MySQL实现简易查询程序的方法
Oct 13 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让数组中有相同值的组成新的数组实例
2017/12/31 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
Aster vs Newbee BO3 第三场2.18
2021/03/10 DOTA
Ext对基本类型的扩展 ext,extjs,format
2010/12/25 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
jquery获取iframe中的dom对象(两种方法)
2013/07/02 Javascript
深入理解javascript的执行顺序
2014/04/04 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
JS实现页面超时后自动跳转到登陆页面
2015/01/19 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
深入理解React高阶组件
2017/09/28 Javascript
总结js函数相关知识点
2018/02/27 Javascript
vue全局使用axios的方法实例详解
2018/11/22 Javascript
JS中this的4种绑定规则详解
2020/02/04 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
python opencv之SIFT算法示例
2018/02/24 Python
wxpython绘制音频效果
2019/11/18 Python
python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例
2020/03/09 Python
Python实现验证码识别
2020/06/15 Python
Python从MySQL数据库中面抽取试题,生成试卷
2021/01/14 Python
一套英文Java笔试题面试题
2016/04/21 面试题
Servlet方面面试题
2016/09/28 面试题
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
摄影助理岗位职责
2014/02/07 职场文书
实习报告评语
2014/04/26 职场文书
道德演讲稿
2014/05/21 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
人事聘任通知
2015/04/21 职场文书
《失物招领》教学反思
2016/02/20 职场文书
JS实现简单九宫格抽奖
2022/06/28 Javascript