$aaa = "abcdefghjklmnopqrst";
echo substr($aaa,0,20)."...";$bbb ="西哀思地恩,中国俊气,空间,博客,哈哈。";echo substr($bbb,0,20)."...";这二个输出结果显示时长度不一样(因为中文或韩文是站二个字符位置的),ord();
如何判断字符串中含有a~z,A~Z,0~9
以外的字符,并把结果显示长度一样?

解决方案 »

  1.   

    php内部应该是用UTF8编码的,中文也是占一个字符吧
    要长度一样,先做一个编码转换,然后再取,不过可能取到半个汉字
      

  2.   

    这是因为单字节和双字节长度不统一导致的。使用iconv_substr这个函数。
    substr($aaa,0,20,'utf8')
      

  3.   

    不可能!
    substr 是按字节数截取串的。无论是什么编码,得到的结果串长度都是一样的
    这一点可以用 strlen 函数加以认证
      

  4.   

    编码问题造成的截取可能出现的乱码,你可以用mb_string扩展
    也就是mb_substr
      

  5.   


    楼主似乎是在抱怨"输出结果显示时长度不一样", 
    这个......显示的长度是和字体/字间距的设置有关的,不是一个php能解决的问题.....
      

  6.   

    不同编码字节长度不一样 substr是按固定字节长度截取的