php substr中文乱码解决办法
如果直接使用substr截取中文字符串肯定会出乱码的,因为他会把一个汉字分成一半,为什么会这样,因为机器内部编码的问题,现在我们来看处理办法
1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。
2、自己书写截取函数,但效率不如用mbstring扩展库来得高。
3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0).
PHP实例代码如下:
* 可以避免乱码的截取汉字 * 参数 $str 为字符串, $start 为开始字符, $len 结束字符 * 返回截取后的字符 */ function msubstr( $str , $start , $len ) { $tmpstr = "" ; //开源代码phpfensi测试数据 $strlen = $start + $len ; for ( $i = 0; $i < $strlen ; $i ++) { if (ord( substr ( $str , $i , 1)) > 0xa0) { $tmpstr .= substr ( $str , $i , 2); $i ++; } else $tmpstr .= substr ( $str , $i , 1); } return $tmpstr ; }方法二,php实现中文字串截取无乱码的方法,代码如下:
function gbsubstr( $string , $start , $length ) { if ( strlen ( $string )> $length ){ $str =null; $len = $start + $length ; for ( $i = $start ; $i < $len ; $i ++){ if (ord( substr ( $string , $i ,1))>0xa0){ $str .= substr ( $string , $i ,2); $i ++; } else { $str .= substr ( $string , $i ,1); } } return $str . '...' ; } else { return $string ; } } ?>查看更多关于php substr中文乱码解决办法 - php函数的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did30855