php表单转换textarea换行符的方法


Posted in PHP onSeptember 10, 2010

下面是我对这个问题的解决过程,最后算是完全搞懂了,真是阴沟里险些翻船

1.必须知道textarea中的换行符是 \n  (个人检测发现按回车键是\n,好像在linux下是\r\n)

2.用nl2br之前,请仔细看好手册解释,我就是搞郁闷了,一般都理解为将\n转换成<br >,其实不是的:

看php手册解释:

nl2br ?  Inserts HTML line breaks before all newlines in a string

Returns string with ‘<br />' inserted before all newlines

意思是说在 新的一行前插入<br />

w3cschool上的说法是:

nl2br() 函数在字符串中的每个新行 (\n) 之前插入 HTML 换行符 (<br />)。

所以nl2br()能够插入<br> 但 \n 依旧存在,比如说 字符串源码是:程序\n生活网,我们nl2br 之后就是 程序<br>\n生活网 所以我们看到的效果将是

程序

生活网———————-换行了,因为源码中还有\n

3.用php函数,str_replace替换函数,比如str_replace(‘\n','<br />') ,问题是替换并没有成功,一直都没有替换掉,我弄了好久甚至开始怀疑textarea中的换行符是不是\n,现在想想真是太动摇了,o(∩_∩)o…    其实我经过测 分别替换    \n       /n   后直觉告诉我自己走进了死胡同,这不是解决问题的方式,肯定有哪里存在根本性错误。突然我想到了会不会是单引号或者双引号的问题呢,于是将str_replace(‘\n','<br />') 改成str_replace(“\n”,”<br />”),灵光闪现了,替换成功。巨汗!

又打开手册把单引号和双引号再看了一遍,最后长叹了一口气,还是自己基础的问题啊,php随简单,还是要注意细节啊。

手册中关于单双引号的解释很详细:

单引号

指定一个简单字符串的最简单的方法是用单引号(字符 )括起来。

要表示一个单引号,需要用反斜线(\)转义,和很多其它语言一样。如果在单引号之前或字符串结尾需要出现一个反斜线,需要用两个反斜线表示。注意如果你试图转义任何其它字符,反斜线本身也会被显示出来!所以通常不需要转义反斜线本身。

————?所以我们用str_replace(‘\n','<br />')替换的 字符串中的 \n 而不是换行符,似乎有些晕。也就是说单引号内的是字符串,php不做任何解释,这其实在别的地方用的时候都知道,但没想到连换行符都不解释。
双引号

如果用双引号(”)括起字符串,PHP 懂得更多特殊字符的转义序列:

表格 6-1. 转义字符

序列
含义

\n
换行(LF 或 ASCII 字符 0×0A(10))

\r
回车(CR 或 ASCII 字符 0×0D(13))

\t
水平制表符(HT 或 ASCII 字符 0×09(9))

\\
反斜线

\$
美元符号

\”
双引号

\[0-7]{1,3}
此正则表达式序列匹配一个用八进制符号表示的字符

\x[0-9A-Fa-f]{1,2}
此正则表达式序列匹配一个用十六进制符号表示的字符

此外,如果试图转义任何其它字符,反斜线本身也会被显示出来!

———这下textarea换行的问题明了了,不是换行符的问题,也不是nl2br的问题,是所有的转移只存在双引号中,单引号在php中只做字符处理。多么郁闷的错误啊。以后一定的牢记。

必须知道textarea中的换行符是 \n (个人检测发现按回车键是\n,好像在linux下是\r\n)

这句有问题:经过我的测试,在windows下是\r\n,在linux才是\n(这个没实测),另外,在win下,\r,\n均有换行的功能...

PHP 相关文章推荐
php 前一天或后一天的日期
Jun 28 PHP
PHP 数组教程 定义数组
Oct 23 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
深入理解php的MySQL连接类
Jun 07 PHP
PHP计算2点经纬度之间的距离代码
Aug 12 PHP
PHP实现今天是星期几的几种写法
Sep 26 PHP
php实现执行某一操作时弹出确认、取消对话框
Dec 30 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
PHP实现mysqli批量执行多条语句的方法示例
Jul 22 PHP
php探针使用原理和技巧讲解
Sep 17 PHP
TP5框架实现的数据库备份功能示例
Apr 05 PHP
PHP实现文件上传与下载
Aug 28 PHP
PHPnow安装服务[apache_pn]失败的问题的解决方法
Sep 10 #PHP
php下使用curl模拟用户登陆的代码
Sep 10 #PHP
PHP获取表单textarea数据中的换行问题
Sep 10 #PHP
php header示例代码(推荐)
Sep 08 #PHP
php下清空字符串中的HTML标签的代码
Sep 06 #PHP
在PHP中PDO解决中文乱码问题的一些补充
Sep 06 #PHP
检测png图片是否完整的php代码
Sep 06 #PHP
You might like
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
PHP 可阅读随机字符串代码
2010/05/26 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
PHP SPL标准库之SplFixedArray使用实例
2015/05/12 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
2009/12/27 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
json前后端数据交互相关代码
2018/09/19 Javascript
vue 实现搜索的结果页面支持全选与取消全选功能
2019/05/10 Javascript
微信小程序实现元素渐入渐出动画效果封装方法
2019/05/18 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
2019/12/25 jQuery
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
python 实现插入排序算法
2012/06/05 Python
Python实现针对给定单链表删除指定节点的方法
2018/04/12 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
2018/11/15 Python
python的concat等多种用法详解
2018/11/28 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
什么是跨站脚本攻击
2014/12/11 面试题
艺术爱好者的自我评价分享
2013/10/08 职场文书
男方父母证婚词
2014/01/12 职场文书
个人自我剖析材料
2014/02/07 职场文书
吨的认识教学反思
2014/04/27 职场文书
小学班主任事迹材料
2014/12/17 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL