function Thtml($msg){
$msg = str_replace('"','"',$msg);
$msg = str_replace("'",''',$msg);
$msg = str_replace("<","&lt;",$msg);
$msg = str_replace(">","&gt;",$msg);
$msg = str_replace("\t","   &nbsp;  &nbsp;",$msg);
$msg = str_replace("\r","",$msg);
$msg = str_replace("   "," &nbsp; ",$msg);
$msg = str_replace("\n","<BR>",$msg);
return $msg;
}

解决方案 »

  1.   

    $str=str_replace('  ',' &nbsp;',nl2br(htmlspecialchars(stripslashes($string))));
    这样处理好像不能输出 \" 字符串,上面的处理就跟输入的一样了。
      

  2.   

    可是自动换行后还是不能按原格式输出,如:
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    输出的却是一行,怎么办?
      

  3.   

    数据插入前:
    $msg = str_replace("\n","<BR>",$msg);
      

  4.   

    样式:word-break:break-all;
    这样就会自动换行了,IE支持,但是firefox不支持。
    firefox该用什么就不知道了,关注中....
      

  5.   

    我的情况不是说不能自动换行,而是自动换行后的内容还是在一行上。
    比如输入时的格式是:
    aaaaaaaaaaaaaaaaaaaaa(自动换行)
    aaaaaaaaaaaaa
    而输出时却是:
    aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
    而我期望的结果是:
    aaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaa
    该怎么办?
      

  6.   

    word-break:break-all;可以的。
    比如输入时的格式是:
    aaaaaaaaaaaaaaaaaaaaa(自动换行)
    aaaaaaaaaaaaa
    定义表格word-break:break-all后输出结果还是:
    aaaaaaaaaaaaaaaaaaaaa
    aaaaaaaaaaaaa