• 沙里软件

  • ShaliSoft.com [手机站]   办公桌收纳抽屉
  • 首页
  • 博文
  • 演示
  • 管理
  • 字符截取中文防乱码 .chr(0) 解决一切

    网络   2013/9/24 12:05:08

    PHP代码

    <?php    

    $len = 19;    

    $text = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?";    

    echo strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."....");    

    ?>  

    chr(0)不是null

    null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000

    虽然chr(0)不会显示出什么,但是他是一个字符。

    当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空”

    根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了

    注:

    编码 第一字节 第二字节

    gb2312 0xa1-0xf7 0xa1-0xfe

    gbk 0x81-0xfe 0x81-0xfe 0x40-0x7e

    big5 0xa1-0xf7 0x81-0xfe 0x40-0x7e


    另一种方法:

    PHP代码

    function csubstr($text, $limit) {    

       $s = ';    

       for($i=0;$i< $limit-3;$i++) {    

           $s .= ord($text[$i])>127 ? $text[$i].$text[++$i] : $text[$i];    

       }    

       return $s;    

    }  

    以上仅适用于 gb2312 编码,如果是UTF-8 的话需要把第4行改为


    PHP代码

    $s .= ord($text[$i])>127 ? $text[$i].$text[++$i].$text[++$i] : $text[$i];  

    UTF-8 中的汉字是 3 个字节。


    阅读(3948) 分享(0)

    上一篇: PHP:$_SERVER中,QUERY_STRING、REQUEST_URI、SCRIPT_NAME与PHP_SELF四个变量的区别
    下一篇: PHP上传、生成缩略图、生成文字水印和图片水印

  • 精彩推荐

    ◆ 安装完office后 在组件服务里DCOM配置中找不到
    ◆ 微信清缓存工具,微信怎么清理缓存?
    ◆ 用回溯法解决子集和问题【C#版本】
    ◆ 实测什么物体会影响WIFI信号
    ◆ 利用UC微信分享接口进行WEB微信分享
    ◆ ASP.NET之GridView Eval() 中数据格式化或格式化数据
    ◆ css常用hack语法
    ◆ 面向对象的缺点,你了解了吗
    ◆ 我国首台可人脸识别ATM机发布 不刷脸不能取钱
    ◆ 2G网络要关闭了吗?你还不打算换4G手机?
  • 用心做事 不能唯利是图

    • 吊儿
    • 用QQ联系我17905772
  • 搜索


  • 最新文章

    • 导出Excel 格式 mso-number-format
    • 服务器iis支持tls1.2,windows server 2008 r2 中IIS启用TLS 1.2(安装SSL后用TLS 1.2)
    • MySQL配置优化
    • EditPlus 添加文件比较工具winmerge
    • 滚动悬浮固定JS特效

  • 热门文章

    • php sso单点登录实现代码
    • 中国菜刀(China chopper) 最新黑客工具
    • redis.conf中文版(基于2.4)
    • 搜索引擎名单大全
    • php图片上传类,支持加水印,生成略缩图

  • 最新图库


  • 最新评论


  • 友情链接

  • 沙里软件

  • 最近访客

    Powered by ShaliSoft.com 豫ICP备13008529号

    免责声明:本站部分内容来源于互联网,转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责,也不构成任何其他建议。如果发现侵犯版权,联系QQ17905772进行删除。