欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

如何交表单的textarea提交的文本的回车,转化为

程序员文章站 2022-06-13 17:04:32
...
表单的textarea里提交的文本,提交以后,被写入mysql数据库,然后再读出来显示出来。结果发现回车没有了,本来好多段,结果结合起来变成一大段。

有什么办法把在表单的textarea里提交的回车符转化为象

这样的html标记呢?在写入数据库前转化好?还是从数据库里读出来以后转化好?

能给个具体的代码吗?


回复讨论(解决方案)

我在网上搜到了这样的答案,就是在保存到数据库的时候,不作处理。读出来的时候,用这条语句:

CurrentContent = conn.myReader["Content"].ToString().Replace( Convert.ToString( ( char ) 13 ), "
" );

可这是面向对象的方法,我不太懂。翻译成面向过程的语句是什么?

你是要php代码还是要什么代码?

你是要php代码还是要什么代码?


是php代码。

我自己的程序是,用$select = mysql_query("select....")语句已经查询出一个结果。
下面我用来取数据:
while($arr = mysql_fetch_array($result))
{

}
其中我需要的字段在$arr[txt]中,然后怎么处理它,才能把其中的回车符转化为

echo nl2br($arr[txt]) ;

http://blog.csdn.net/beyondqqiang/article/details/8893663
这里应该可以帮到你的

http://blog.csdn.net/beyondqqiang/article/details/8893663
这里应该可以帮到你的


感谢你提供的资料,这里面说的比较复杂,用了什么正则表达式,我也没学过正则表达式。而且它功能也复杂,就是把多行回车转化为一个


我的要求很简单,就是把textarea里提交的一个回车转化为一个
,你能帮我写一下代码吗?据说存入数据库的时候不变。读出来的时候处理,我读出的语句是:
$select = mysql_query("select....")
while($arr = mysql_fetch_array($result))
{
。。。处理语句
}
其中我需要的字段在$arr[txt]中,然后怎么处理它,才能把其中的回车符转化为

用nl2br($arr[txt])没有达到目的,仍然没有换行。

我自己写了一条:
str_replace((char(13)), "
", $arr[txt]);

好象有语法问题,直接页面打开是空白。(这暗示这个php中有些语句有语法错误。)

$arr['txt'] = nl2br($arr['txt']);

str_replace((char(13)), "
", $arr[txt]);
是错误的,因为 php 没有 char 函数,只有 chr 函数
但是写做 chr(13) 也是不妥的,因为 linux 下的文本中并没有这个“回车”符所以自己写的话,应写作
$arr['txt'] = preg_replace("/[\r\n]+/", "
", $arr['txt']);

$arr['txt'] = nl2br($arr['txt']);

str_replace((char(13)), "
", $arr[txt]);
是错误的,因为 php 没有 char 函数,只有 chr 函数
但是写做 chr(13) 也是不妥的,因为 linux 下的文本中并没有这个“回车”符所以自己写的话,应写作
$arr['txt'] = preg_replace("/[\r\n]+/", "
", $arr['txt']);


谢谢!用你这个语句就行了,虽然我不太懂是什么意思。主要就是第一个参数不太懂,以后再学习。

除非你的$arr['txt']没有文本换行,要不然nl2br 不会没有达到目的。

$arr['txt'] = nl2br($arr['txt']);

str_replace((char(13)), "
", $arr[txt]);
是错误的,因为 php 没有 char 函数,只有 chr 函数
但是写做 chr(13) 也是不妥的,因为 linux 下的文本中并没有这个“回车”符所以自己写的话,应写作
$arr['txt'] = preg_replace("/[\r\n]+/", "
", $arr['txt']);


能不能麻烦你再帮我写一条把textarea中的空格转化为&nbsp的语句?我暂时对这些表达式还没有学过。


$arr['txt'] = nl2br($arr['txt']);

str_replace((char(13)), "
", $arr[txt]);
是错误的,因为 php 没有 char 函数,只有 chr 函数
但是写做 chr(13) 也是不妥的,因为 linux 下的文本中并没有这个“回车”符所以自己写的话,应写作
$arr['txt'] = preg_replace("/[\r\n]+/", "
", $arr['txt']);


谢谢!用你这个语句就行了,虽然我不太懂是什么意思。主要就是第一个参数不太懂,以后再学习。

这个“/[\r\n]+/”是文件中的换行符号,但是用那个nl2br函数就可以将textarea中输入的换行符号转换成
,因为文本域中的换行符号是“\n”不是“\r\n”。nl2br函数没效果可能是你在文本域中没有敲回车吧。

那是正则



$arr['txt'] = nl2br($arr['txt']);

str_replace((char(13)), "
", $arr[txt]);
是错误的,因为 php 没有 char 函数,只有 chr 函数
但是写做 chr(13) 也是不妥的,因为 linux 下的文本中并没有这个“回车”符所以自己写的话,应写作
$arr['txt'] = preg_replace("/[\r\n]+/", "
", $arr['txt']);


谢谢!用你这个语句就行了,虽然我不太懂是什么意思。主要就是第一个参数不太懂,以后再学习。

这个“/[\r\n]+/”是文件中的换行符号,但是用那个nl2br函数就可以将textarea中输入的换行符号转换成
,因为文本域中的换行符号是“\n”不是“\r\n”。nl2br函数没效果可能是你在文本域中没有敲回车吧。
敲回车,显示出来却没有换行。

除非你的$arr['txt']没有文本换行,要不然nl2br 不会没有达到目的。


请问,nl2br这个函数,是把值为0x0d,0x0a(16进制的回车换行)这两个转换为
嘛?

$arr['txt'] = nl2br($arr['txt']);

str_replace((char(13)), "
", $arr[txt]);
是错误的,因为 php 没有 char 函数,只有 chr 函数
但是写做 chr(13) 也是不妥的,因为 linux 下的文本中并没有这个“回车”符所以自己写的话,应写作
$arr['txt'] = preg_replace("/[\r\n]+/", "
", $arr['txt']);


请问,能帮我再写个把空格转换为&nbsp的语句吗?

$s = str_replace(' ', ' ', $s);

nl2br这个函数,是在 回车(0x0d) 换行(0x0a)前面加一个 '
' 串

前台用js处理下 replace(/\n|\r|(\r\n)|(\u0085)|(\u2028)|(\u2029)/g, "
");

$arr['txt'] = nl2br($arr['txt']);

str_replace((char(13)), "
", $arr[txt]);
是错误的,因为 php 没有 char 函数,只有 chr 函数
但是写做 chr(13) 也是不妥的,因为 linux 下的文本中并没有这个“回车”符所以自己写的话,应写作
$arr['txt'] = preg_replace("/[\r\n]+/", "
", $arr['txt']);


我发现你给的这个语句:$arr['txt'] = preg_replace("/[\r\n]+/", "
", $arr['txt']);
是可以把回车转化为
,并且在最后的网页上换行了。
但是它好象会把几行回车转化为一个
,最后的结果是:我发贴的时候:空了好几行,最后显示的时候,却只换了一行。想挺入空行,增大间隔,也不可能了。

那么如果想一个回车转化为一个
应该怎么办呢?

经过试验,我发现nl2br函数是可以的,但如果这样就不行:

$arr[txt] = nl2br($arr[txt]);

但是改成这样就行了:

$str = nl2br($arr[txt]);

然后显示$str,发现正常换行了,不知是什么原因。

而且它也可以把多行回车解释成多个
,显示的时候也是多个换行,这正是我需要的。谢谢!

str_replace(" ", " ", $arr[txt]);

经过试验,我发现nl2br函数是可以的,但如果这样就不行:

$arr[txt] = nl2br($arr[txt]);

但是改成这样就行了:

$str = nl2br($arr[txt]);

然后显示$str,发现正常换行了,不知是什么原因。

而且它也可以把多行回车解释成多个
,显示的时候也是多个换行,这正是我需要的。谢谢!


$arr[txt] 不行?你怎么显示的? 之后又对它动了手脚吧。

这是我成功过的

$select = mysql_query("select....") while($arr = mysql_fetch_array($result)) {    echo str_replace(" ", " ", $arr['txt']); }

我在网上搜到了这样的答案,就是在保存到数据库的时候,不作处理。读出来的时候,用这条语句:

CurrentContent = conn.myReader["Content"].ToString().Replace( Convert.ToString( ( char ) 13 ), "
" );

可这是面向对象的方法,我不太懂。翻译成面向过程的语句是什么?


翻一下,读出Content字段数据,转换成字符串格式,将回车字符换成

直接用

扩起来