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 相关文章推荐
echo, print, printf 和 sprintf 区别
Dec 06 PHP
PHP 强制下载文件代码
Oct 24 PHP
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
Apr 23 PHP
使用PHP求两个文件的相对路径
Jun 20 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
两种php给图片加水印的实现代码
Apr 18 PHP
PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
Apr 01 PHP
[原创]php实现子字符串位置相互对调互换的方法
Jun 02 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
May 08 PHP
TP5框架实现签到功能的方法分析
Apr 05 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
js中document.getElementByid、document.all和document.layers区分介绍
2011/12/08 Javascript
jquery ready函数、css函数及text()使用示例
2013/09/27 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
jQuery实现鼠标经过时出现隐藏层文字链接的方法
2015/10/12 Javascript
以jQuery中$.Deferred对象为例讲解promise对象是如何处理异步问题
2015/11/13 Javascript
javascript返回顶部的按钮实现方法
2016/01/09 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
ajax 提交数据到后台jsp页面及页面跳转问题
2017/01/19 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
python subprocess 杀掉全部派生的子进程方法
2017/01/16 Python
Python的标准模块包json详解
2017/03/13 Python
python安装教程
2018/02/28 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
python调用其他文件函数或类的示例
2019/07/16 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
夏威夷咖啡公司:Hawaii Coffee Company
2019/09/19 全球购物
亿阳信通股份有限公司C#笔试题
2016/12/06 面试题
自荐书封面下载
2013/11/29 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
后备干部培训方案
2014/05/22 职场文书
大学生求职信例文
2014/06/29 职场文书