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下载远程文件类(支持断点续传)
Nov 14 PHP
php学习之流程控制实现代码
Jun 09 PHP
sql注入与转义的php函数代码
Jun 17 PHP
PHP 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
Jun 12 PHP
php将字符串转换成16进制的方法
Mar 17 PHP
php文件缓存方法总结
Mar 16 PHP
CI框架表单验证实例详解
Nov 21 PHP
php+Memcached实现简单留言板功能示例
Feb 15 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
PHP+Ajax简单get验证操作示例
Mar 02 PHP
laravel withCount 统计关联数量的方法
Oct 10 PHP
laravel框架使用极光推送消息操作示例
Feb 15 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 启动时报错的简单解决方法
2014/01/27 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
layui框架实现文件上传及TP3.2.3(thinkPHP)对上传文件进行后台处理操作示例
2018/05/12 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
js的flv视频播放器插件使用方法
2015/06/23 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
快速实现JS图片懒加载(可视区域加载)示例代码
2017/01/04 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
JS实现简易留言板(节点操作)
2020/03/16 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
[02:06]DOTA2肉山黑名单魔法终结者 敌法师中文配音鉴赏
2013/06/17 DOTA
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
Python中对列表排序实例
2015/01/04 Python
python中异常报错处理方法汇总
2016/11/20 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
你真的了解Python的random模块吗?
2017/12/12 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
Python闭包及装饰器运行原理解析
2020/06/17 Python
关于Python不换行输出和不换行输出end=““不显示的问题(亲测已解决)
2020/10/27 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
库房主管岗位职责
2013/12/31 职场文书
员工薪酬福利制度
2014/01/17 职场文书
物理力学求职信
2014/02/18 职场文书
关于军训的感想
2015/08/07 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
Python socket如何解析HTTP请求内容
2022/02/12 Python