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中数据的批量导入(csv文件)
Oct 09 PHP
在PWS上安装PHP4.0正式版
Oct 09 PHP
php ajax 静态分页过程形式
Sep 02 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(一)
Jun 23 PHP
PHP多个文件上传到服务器实例
Oct 29 PHP
PHP后台微信支付和支付宝支付开发
Apr 28 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
Jun 30 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
Jan 29 PHP
PHP常见的几种攻击方式实例小结
Apr 29 PHP
php实现文件上传基本验证
Mar 04 PHP
php 的多进程操作实践案例分析
Feb 28 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 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
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
javascript 操作文件 实现方法小结
2009/07/02 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
使用闭包对setTimeout进行简单封装避免出错
2013/07/10 Javascript
jquery弹出框的用法示例(2)
2013/08/26 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
理解jQuery stop()方法
2014/11/21 Javascript
jquery单选框radio绑定click事件实现方法
2015/01/14 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
Vue开发环境中修改端口号的实现方法
2019/08/15 Javascript
JavaScript实现抖音罗盘时钟
2019/10/11 Javascript
vue如何在用户要关闭当前网页时弹出提示的实现
2020/05/31 Javascript
[02:30]联想杯DOTA2完美世界全国高校联赛—北京站现场
2015/11/16 DOTA
Python and、or以及and-or语法总结
2015/04/14 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
Python日志模块logging基本用法分析
2018/08/23 Python
python实现随机漫步算法
2018/08/27 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
AmazeUI 折叠面板的实现代码
2020/08/17 HTML / CSS
Agoda中文官网:安可达(低价预订全球酒店)
2021/01/18 全球购物
技校生自我鉴定
2013/12/08 职场文书
村委会贫困证明
2014/01/14 职场文书
小学开学典礼主持词
2014/03/19 职场文书
某集团股份有限公司委托书样本
2014/09/24 职场文书
农村文化建设标语
2014/10/07 职场文书
作风转变年心得体会
2014/10/22 职场文书
Unity连接MySQL并读取表格数据的实现代码
2021/06/20 MySQL
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫