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

WBOY
發布: 2016-06-23 13:32:58
原創
1039 人瀏覽過

表单的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中的空格转化为 的语句?我暂时对这些表达式还没有学过。


$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']);


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

$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字段数据,转换成字符串格式,将回车字符换成

直接用

扩起来 
登入後複製
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板