zoukankan      html  css  js  c++  java
  • php chr() ord()中文截取乱码问题解决方法

    今天看到chr() ord()中文截取乱码问题这个例子,觉得相当的不错,拿出来和大家分享下,有兴趣的朋友可以去试下,看看怎么样.

    代码如下:
    
    <?php 
    $lenth = 19; 
    $str = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?"; 
    echo strlen($str)<=$lenth ? $str : (substr($str,0,$lenth).chr(0)."...."); 
    ?> 
    
    复制代码 代码如下:
    
    <? 
    /* 
    @ 另一种方法,使用ord()函数: 
    @ 适用于 gb2312 编码: 
    */ 
    $str = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?"; 
    function gb2312_substr($str, $limit) { 
    $restr =''; 
    for($i=0;$i< $limit-3;$i++) { 
    $restr .= ord($str[$i])>127 ? $str[$i].$str[++$i] : $str[$i]; 
    } 
    return $restr; 
    } 
    /* 
    @ 以下仅适用于 utf-8 编码; 
    */ 
    function utf8_substr($str, $limit) { 
    $restr = ''; 
    for($i=0;$i< $limit-3;$i++) { 
    $restr .= ord($str[$i])>127 ? $str[$i].$str[++$i].$str[++$i] : $str[$i]; 
    } 
    return $restr; 
    } 
    //解释下上面第一个:chr(0)不是null,null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000虽然chr(0)不会显示出什么,但是他是一个字符。虽然chr(0)不会显示出什么,但是他是一个字符。当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。 
    ?> 
  • 相关阅读:
    python之路-HTML初识
    python之路-CentOS6.5 安装Python 的依赖包
    python之路-离线pip下载Python包
    python之路-Memcache
    python之路-SQLAlchemy
    python之路-Redis
    python之路-Mysql
    偶然发现了获取有ID的dom的一种方法
    js 工厂模式和构造函数的区别
    ES6:export和import
  • 原文地址:https://www.cnblogs.com/archoncap/p/4871835.html
Copyright © 2011-2022 走看看