PHP 中文字符串截取函数示例:支持gb2312,gbk,big
内容摘要
这篇文章主要为大家详细介绍了PHP 中文字符串截取函数示例:支持gb2312,gbk,big,具有一定的参考价值,可以用来参考一下。
下面感兴趣的小伙伴一起来看看吧,支持gb2312,gbk,big三种编
下面感兴趣的小伙伴一起来看看吧,支持gb2312,gbk,big三种编
文章正文
这篇文章主要为大家详细介绍了PHP 中文字符串截取函数示例:支持gb2312,gbk,big,具有一定的参考价值,可以用来参考一下。
下面感兴趣的小伙伴一起来看看吧,支持gb2312,gbk,big三种编码。chr(0)不是null null是什么都没有,而chr(0)的值是0。表示成16进制是0x00,表示成二进制是00000000 虽然chr(0)不会显示出什么,但是他是一个字符。 当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0x81到0xff与0x00组合始终都显示为“空” 根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了注: 编码 第一字节 第二字节gb2312 0xa1-0xf7 0xa1-0xfegbk 0x81-0xfe 0x81-0xfe 0x40-0x7ebig5 0xa1-0xf7 0x81-0xfe 0x40-0x7e
其次这个是网上搜索的,支持utf-8编码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | <code class = "php" > /** *中文字符串截取函数:支持gb2312,gbk,big * * @param$len = 19; * @param$text = "怎么将新闻的很长的标题只显示前面一些字,后面用.....来代替?"; * @paramecho strlen($text)<=$len ? $text : (substr($text,0,$len).chr(0)."...."); * @author php教程 www.idcnote.com **/ function subString_UTF8( $str , $start , $lenth ) { $len = strlen ( $str ); $r = array (); $n = 0; $m = 0; for ( $i = 0; $i < $len ; $i ++) { $x = substr ( $str , $i , 1); $a = base_convert (ord( $x ), 10, 2); $a = substr ( '00000000' . $a , -8); if ( $n < $start ){ if ( substr ( $a , 0, 1) == 0) { } elseif ( substr ( $a , 0, 3) == 110) { $i += 1; } elseif ( substr ( $a , 0, 4) == 1110) { $i += 2; } $n ++; } else { if ( substr ( $a , 0, 1) == 0) { $r [ ] = substr ( $str , $i , 1); } elseif ( substr ( $a , 0, 3) == 110) { $r [ ] = substr ( $str , $i , 2); $i += 1; } elseif ( substr ( $a , 0, 4) == 1110) { $r [ ] = substr ( $str , $i , 3); $i += 2; } else { $r [ ] = '' ; } if (++ $m >= $lenth ){ break ; } } } return $r ; } // End subString_UTF8; } // End String /*** 代码来自php教程(www.idcnote.com) ***/ </code> |
注:关于PHP 中文字符串截取函数示例:支持gb2312,gbk,big的内容就先介绍到这里,更多相关文章的可以留意
代码注释