在textarea中按回车换行,经过post提交之后,
希望用str_ireplace将文本换行(以为是\n)替换为空字符串。但是一直没有成功
之后无意间用mysql_real_escape_string处理post内容,然后echo出来之后才发现的提交上来并不是\n而是\r\n。问题就是,从开发的角度上来说,
1 如何才能直观的观察post上来的特殊字符(比如上例中的换行)到底是什么样?上例我是无意间使用mysql_real_escape_string才发现的2 当用mysql_real_escape_string转义\r\n插入DB之后,将其显示在页面的时候,是改将\r\n转化为<br />,还是应该将\n转化为<br />?  我用\n转化为<br />来显示虽然是没有问题的,但是意识到\r\n的问题后,不知道哪种写法才是最准确的。3 查资料\r\n是windows下的换行,而linux下为\n。如果是在linux系统下在页面的textarea中换行,post之后是不是就是\n?考虑到这个情况,应该如何对应?请指教

解决方案 »

  1.   

    1 可以使用PHP_EOL这个常量,它会自动识别操作系统,而选择合适的换行符。
    2 textarea提交后,存储到DB前应该转换为<br />,显示在网页上也应该是<br />。直接使用nl2br()函数就可以解决你的1,2问题。不用自己replace。你不用去关心用户提交上来的到底是/r/n或/n。他会自动处理。
    3 错!提交上来的到底是/r/n或/n,取决于客户端,页面在什么系统上无所谓,关键是用户的浏览器在什么系统上。
      

  2.   

    nl2br
    (PHP 4, PHP 5)nl2br — 在字符串所有新行之前插入 HTML 换行标记说明
    string nl2br ( string $string [, bool $is_xhtml = true ] )
    在字符串 string 所有新行之前插入 '<br />' 或 '<br>',并返回。 参数string 
    输入字符串。 is_xhtml 
    是否使用 XHTML 兼容换行符。 
    返回值
    返回调整后的字符串。 范例Example #1 nl2br() 使用范例<?php
    echo nl2br("foo isn't\n bar");
    ?> 
    以上例程会输出:foo isn't<br />
     bar
    Example #2 使用 is_xhtml 生成合法的 HTML 标记<?php
    echo nl2br("Welcome\r\nThis is my HTML document", false);
    ?> 
    以上例程会输出:Welcome<br>
    This is my HTML document