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设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 PHP
实例讲解PHP面向对象之多态
Aug 20 PHP
PHP中cookie和session的区别实例分析
Aug 28 PHP
php显示指定目录下子目录的方法
Mar 20 PHP
php实现的验证码文件类实例
Jun 18 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
浅谈PHP中的错误处理和异常处理
Feb 04 PHP
php制作圆形用户头像的实例_自定义封装类源代码
Sep 18 PHP
php微信开发之音乐回复功能
Jun 14 PHP
PHP大文件分片上传的实现方法
Oct 28 PHP
PHP fopen中文文件名乱码问题解决方案
Oct 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
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
JS和jquery获取各种屏幕的宽度和高度的代码
2013/08/02 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
js获取视频时长代码
2014/04/10 Javascript
js字符串完全替换函数分享
2014/12/03 Javascript
javascript面向对象之定义成员方法实例分析
2015/01/13 Javascript
jQuery中wrapInner()方法用法实例
2015/01/16 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
vue结合axios与后端进行ajax交互的方法
2018/07/06 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
Python模仿POST提交HTTP数据及使用Cookie值的方法
2014/11/10 Python
python冒泡排序简单实现方法
2015/07/09 Python
python实现比较文件内容异同
2018/06/22 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
Django实现分页显示效果
2019/10/31 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
Pycharm创建文件时自动生成文件头注释(自定义设置作者日期)
2020/11/24 Python
python中翻译功能translate模块实现方法
2020/12/17 Python
使用css3背景渐变中的透明度来设置不同颜色的背景渐变
2014/03/31 HTML / CSS
C,C++的几个面试题小集
2013/07/13 面试题
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
2013/07/26 面试题
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
大学生求职自我评价
2014/01/16 职场文书
2014元旦晚会策划方案
2014/02/19 职场文书
检查接待方案
2014/02/27 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
疾病捐款倡议书
2014/05/13 职场文书
个人批评与自我批评范文
2014/10/17 职场文书
大二学年个人总结
2015/03/03 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
MySQL CHAR和VARCHAR该如何选择
2021/05/31 MySQL
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
HTML5+CSS+JavaScript实现捉虫小游戏设计和实现
2021/10/16 HTML / CSS