<body bgcolor="menu" onload="document.write('<?=htmlentities(nl2br($contents));?>');">$contents里面就包含有换行符。

解决方案 »

  1.   

    既然这样你直接用javascript写好了呀,干嘛要用PHP输出啊??
    <body bgcolor="menu" onload="document.write('<?=addslashes($contents);?>');">
      

  2.   

    <html>
    <head>
    <script>
    <!--
    function test()
    {
      echo $contents;
    }
    //-->
    </script>
    </head>
    <body  bgcolor="menu" onload="test();">
      

  3.   

    JS解释出错。
    查看源文件时看到下面的语句document.write("a
    &amp;lt;br /&amp;gt;
    b");你们看,document.write 要写的的字串里出现换行符。
    我的目的就是想将那些换行符换掉,让document.write可以准备写出。htmlspecialchars, htmlentities, nl2br,addslashes这些函数我都试过了。
      

  4.   

    我现在只想确认一个问题回车符是由chr(10)和chr(13)组成的吗?
    还是其它?!!
      

  5.   

    \n  换行
    \r  回车
    就用一个nl2br()行了
      

  6.   

    document.write('');
    JavaScript的输出包装就是有这个弊端!楼主说的这个问题,我到现在还没有解决掉呢!内容当中不到有换行和空格。关注此贴!
      

  7.   

    哈哈,撞枪口上了,这个问题俺也遇到过原因:nl2br()不好使!nl2br() 其实并不是把 "\n" 替换成 "<br>",而是在每个 "\n" 前加一个 "<br>","\n" 还在!下面的函数是俺一直用的,酒精烤烟,应该没问题:function my_nl2br($s)
    {
    return str_replace("\n",'',str_replace("\r",'',str_replace("\r\n",'<br>',$s)));
    }
      

  8.   

    因为 DOS/Windows 和 Linux/Unix 的换行符不一样:DOS/Windows: CRLF  ("\r\n")
    Linux/Unix: LF ("\n")好像还有一些系统用 CR ("\r") 的,所以你的字符串有可能几种换行符都有(跟字符串来源有关),所以我将3种换行符都处理了。如果你能保证你的字符串中只有一种,你也可以只处理这一种。
      

  9.   

    【更正】不能说是3种都处理了,我用的场合一般只有 "\r\n",所以我只把 "\r\n" 替换成 <BR>,另两种简单删除(替换成空)了事,如果你想都替换成 <br>:function my_nl2br($s)
    {
    return str_replace("\n",'<br>',str_replace("\r",'<br>',str_replace("\r\n",'<br>',$s)));
    }注意次序:先替换 "\r\n",再替换单个的字符,否则 "\r\n" 就替换成了 <br><br>