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 18 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
php浏览历史记录的方法
Mar 10 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
从性能方面考虑PHP下载远程文件的3种方法
Dec 29 PHP
mysql alter table命令修改表结构实例详解
Sep 24 PHP
PHP使用imagick扩展实现合并图像的方法
Apr 25 PHP
PHP7扩展开发之hello word实现方法详解
Jan 15 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
Laravel 添加多语言提示信息的方法
Sep 29 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 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/05/18 PHP
PHP FileSystem 文件系统常用api整理总结
2019/07/12 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
2020/08/03 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
javascript 避免闭包引发的问题
2009/03/17 Javascript
jQuery插件zTree实现删除树子节点的方法示例
2017/03/08 Javascript
angular+webpack2实战例子
2017/05/23 Javascript
微信小程序实现传递多个参数与事件处理
2019/08/12 Javascript
解决vue动态下拉菜单 有数据未反应的问题
2020/08/06 Javascript
Python random模块用法解析及简单示例
2017/12/18 Python
Android基于TCP和URL协议的网络编程示例【附demo源码下载】
2018/01/23 Python
python去掉空白行的多种实现代码
2018/03/19 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
python 代码运行时间获取方式详解
2020/09/18 Python
python如何调用php文件中的函数详解
2020/12/29 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
中文师范生自荐信
2014/01/30 职场文书
司马光教学反思
2014/02/01 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
创先争优一句话承诺
2014/05/29 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
心术观后感
2015/06/11 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
MySQL中出现乱码问题的终极解决宝典
2021/05/26 MySQL
Android中的Launch Mode详情
2022/06/05 Java/Android
Rust中的Struct使用示例详解
2022/08/14 Javascript