mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象; 举例1: <?php echo mb_substr('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8'); echo "<br>"; ?> <?php echo mb_strcut('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8'); ?> 输出: 这样一来我的字 ========================================================================= 参考资料: PHP substr() 函数可以 分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函 数,mb_substr() /mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个 参数,以设定字符串的编码,但是 一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll 打开。 举例2: mbstring 函数的说明: php的mbstring扩展模块提供了多字节字符的处理能力,平常最常用的就是用mbstring来切分多字节的中文字符,这样可以避免出现半个字符的情况,由于是php的扩展,它的性能也要比一些自定义的多字节切分函数要好上一些。 举例对比: <?php $str = '我是一串比较长的中文-www.webjx.com'; echo "mb_substr:" . mb_substr($str, 0, 6, 'utf-8'); echo "<br>"; echo "mb_strcut:" . mb_strcut($str, 0, 6, 'utf-8'); //mb_substr:我是一串比较按字符来截取,一个英文字母、一个汉字都是一个字符 //mb_strcut:我是按字节数截取,一个汉字是3个字节数 echo "<br>"; var_dump( substr( 'abc', 1, 2 ) ); // returns "false" echo "<br>"; var_dump( mb_substr( 'abc', 1, 2 ) ); // returns "" echo "<br>";//未遇到函数返回值; var_dump( substr( 'abc', 5, 2 ) ); // returns "false" echo "<br>"; var_dump( mb_substr( 'abc', 5, 2 ) ); // returns "" echo "<br>";//以上是两个函数遇到异常时返回值不同; ?> |
|