表单的textarea里提交的文本,提交以后,被写入mysql数据库,然后再读出来显示出来。结果发现回车没有了,本来好多段,结果结合起来变成一大段。有什么办法把在表单的textarea里提交的回车符转化为象<p>这样的html标记呢?在写入数据库前转化好?还是从数据库里读出来以后转化好?能给个具体的代码吗?

解决方案 »

  1.   

    我在网上搜到了这样的答案,就是在保存到数据库的时候,不作处理。读出来的时候,用这条语句:CurrentContent = conn.myReader["Content"].ToString().Replace( Convert.ToString( ( char ) 13 ), "<br>" );可这是面向对象的方法,我不太懂。翻译成面向过程的语句是什么?
      

  2.   

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

  3.   

    是php代码。我自己的程序是,用$select = mysql_query("select....")语句已经查询出一个结果。
    下面我用来取数据:
    while($arr = mysql_fetch_array($result))
    {}
    其中我需要的字段在$arr[txt]中,然后怎么处理它,才能把其中的回车符转化为<br>?
      

  4.   

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

  5.   

    感谢你提供的资料,这里面说的比较复杂,用了什么正则表达式,我也没学过正则表达式。而且它功能也复杂,就是把多行回车转化为一个<BR>我的要求很简单,就是把textarea里提交的一个回车转化为一个<BR>,你能帮我写一下代码吗?据说存入数据库的时候不变。读出来的时候处理,我读出的语句是:
    $select = mysql_query("select....")
    while($arr = mysql_fetch_array($result))
    {
    处理语句
    }
    其中我需要的字段在$arr[txt]中,然后怎么处理它,才能把其中的回车符转化为<br>?
      

  6.   

    用nl2br($arr[txt])没有达到目的,仍然没有换行。我自己写了一条:
    str_replace((char(13)), "<br>", $arr[txt]);好象有语法问题,直接页面打开是空白。(这暗示这个php中有些语句有语法错误。)
      

  7.   

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

  8.   

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

  9.   

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

  10.   

    谢谢!用你这个语句就行了,虽然我不太懂是什么意思。主要就是第一个参数不太懂,以后再学习。这个“/[\r\n]+/”是文件中的换行符号,但是用那个nl2br函数就可以将textarea中输入的换行符号转换成<br />,因为文本域中的换行符号是“\n”不是“\r\n”。nl2br函数没效果可能是你在文本域中没有敲回车吧。
      

  11.   

    谢谢!用你这个语句就行了,虽然我不太懂是什么意思。主要就是第一个参数不太懂,以后再学习。这个“/[\r\n]+/”是文件中的换行符号,但是用那个nl2br函数就可以将textarea中输入的换行符号转换成<br />,因为文本域中的换行符号是“\n”不是“\r\n”。nl2br函数没效果可能是你在文本域中没有敲回车吧。
    敲回车,显示出来却没有换行。
      

  12.   

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

  13.   

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

  14.   

    $s = str_replace(' ', '&nbsp;', $s);nl2br这个函数,是在 回车(0x0d) 换行(0x0a)前面加一个 '<br />' 串
      

  15.   

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

  16.   

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

  17.   

    经过试验,我发现nl2br函数是可以的,但如果这样就不行:$arr[txt] = nl2br($arr[txt]);但是改成这样就行了:$str = nl2br($arr[txt]);然后显示$str,发现正常换行了,不知是什么原因。而且它也可以把多行回车解释成多个<br>,显示的时候也是多个换行,这正是我需要的。谢谢!
      

  18.   

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

  19.   

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

  20.   

    这是我成功过的
    $select = mysql_query("select....")
     while($arr = mysql_fetch_array($result))
     {
        echo str_replace(" ", "&nbsp;", $arr['txt']); 
    }
      

  21.   

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