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中for循环语句的几种变型
Nov 26 PHP
PHP开发环境配置(MySQL数据库安装图文教程)
Apr 28 PHP
PHP中使用gettext来支持多语言的方法
May 02 PHP
PHP也能干大事 随机函数
Apr 14 PHP
php实现递归的三种基本方式
Jul 04 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
Jan 05 PHP
Docker 如何布置PHP开发环境
Jun 21 PHP
php生成图片缩略图功能示例
Feb 22 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
ThinkPHP框架实现导出excel数据的方法示例【基于PHPExcel】
May 12 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 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设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
PHP实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
使用ImageMagick进行图片缩放、合成与裁剪(js+python)
2013/09/16 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
深入浅析JavaScript中的arguments对象(强力推荐)
2016/06/03 Javascript
jQuery实现的表头固定效果实例【附完整demo源码下载】
2016/08/01 Javascript
javascript 动态样式添加的简单实现
2016/10/11 Javascript
Javascript vue.js表格分页,ajax异步加载数据
2016/10/24 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
Bootstrap警告框(Alert)插件使用方法
2017/03/21 Javascript
详解angular element()方法使用
2017/04/08 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
使用vue-cli打包过程中的步骤以及问题的解决
2018/05/08 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
Ant Design Vue 添加区分中英文的长度校验功能
2020/01/21 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
vue-cli3 引入 font-awesome的操作
2020/08/11 Javascript
在Django框架中设置语言偏好的教程
2015/07/27 Python
Python冒泡排序注意要点实例详解
2016/09/09 Python
Python文件操作基本流程代码实例
2017/12/11 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
selenium+python自动化测试环境搭建步骤
2019/06/03 Python
Python 处理文件的几种方式
2019/08/23 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
Java面试题:请问一下代码输出是什么
2015/05/27 面试题
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
投资合作协议书范本
2014/04/17 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
绿色校园广播稿
2014/10/13 职场文书
公司财务人员岗位职责
2015/04/14 职场文书