用户POST提交字符串content内容写入数据库之前都会有trim去除每行的前后空格,可是看到的有的提交写入到数据库的内容还是有些段落前面有一小段空格。怎么都去除不掉。他不是\s也不是\n\r\0,用ord()函数查询他的值等于 161.但是如何去除开头的这个空。

解决方案 »

  1.   

    插入数据库前把文字的格式设置成UTF-8无BOM格式编码试一下
      

  2.   

    http://www.php.net/trim
      

  3.   


    不是。提交的都是纯中文的,但是回车之后开头有一个空的。不是chr(32),ord查看的是161,如果把每行的这个chr(161)去掉,很多文字却也被去掉了。测试代码:<?php
    $str = "【深】
      【深圳景天。  .1这个点前面有一段ord()==161的,2,此段落开头也有  【深产品。  .1这个点前面有一段ord()==161的,2,此段落开头也有  【深】等。";echo strpos($str,chr(161)) === FALSE ? "my":"you";
    $str = preg_replace("/([ \t\.\-]+)/","",$str);
    $arr = explode("\n",$str);$count=0;
    $type1 = $type2 = "";
    foreach ($arr as $line)
    {
    $count++;
    //第二种过滤
    $line1 = trim( $line );
    $line2 = trim( $line1,chr(161) );
    $type1 .= "{$count}:\t[{$line1}]\n";
    $type2 .= "{$count}:\t[{$line2}]\n";
    }
    echo "\n//第一种情况结果:\n";
    echo $type1;echo "\n//第二种情况结果:\n";
    echo $type2;
    echo "\n他的ord值是这个[".ord("  ")."],不是32";
    输出结果:X-Powered-By: PHP/5.2.0
    Content-type: text/htmlyou
    //第一种情况结果:
    1: [【深】]
    2: [  【深圳景天。  1这个点前面有一段ord()==161的,2,此段落开头也有]
    3: []
    4: [  【深产品。  1这个点前面有一段ord()==161的,2,此段落开头也有]
    5: []
    6: [  【深】等。]//第二种情况结果:
    1: [旧睢縘
    2: [旧钲诰疤臁! �1这个点前面有一段ord()==161的,2,此段落开头也有]
    3: []
    4: [旧畈贰! �1这个点前面有一段ord()==161的,2,此段落开头也有]
    5: []
    6: [旧睢康取他的ord值是这个[161],不是32
      

  4.   

    "【"这个符号,GBK下,ascii码值就是0xa1be,应该不是这个数据的问题。
    数据入库,请确认脚本的编码格式跟数据库表的编码格式是否一致。不一致就可能会有乱码出现。
    最好用UTF-8。