php 中文字符串截取
2015-11-23 13:36
489 查看
直接使用PHP函数substr截取中文字符可能会出现乱码,主要是substr可能硬生生的将一个中文字符“锯”成两半。解决办法: 1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。 2、自己书写截取函数,但效率不如用mbstring扩展库来得高。 3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0)。 ============================= substr()函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mb_substr()/mb_strcut这个函数,mb_substr()/mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是一般的服务器都没打开php_mbstring.dll,需要在php.ini在把php_mbstring.dll打开。 举个例子: <?php echo mb_substr('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8'); ?> 输出:这样一来我的字 <?php echo mb_strcut('这样一来我的字符串就不会有乱码^_^', 0, 7, 'utf-8'); ?> 输出:这样一 从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。 ============================= PHP实现中文字串截取无乱码的方法 <?php //此函数完成带汉字的字符串取串 function substr_CN($str,$mylen){ $len=strlen($str); $content=''; $count=0; for($i=0;$i<$len;$i++){ if(ord(substr($str,$i,1))>127){ $content.=substr($str,$i,2); $i++; }else{ $content.=substr($str,$i,1); } if(++$count==$mylen){ break; } } echo $content; } $str="34中华人民共和国56"; substr_CN($str,3);//输出34中 ?>
相关文章推荐
- PHP $_SERVER说明详解
- php设置编码格式的方法
- PHP实现简单爬虫-抓取网页url
- PHP - 验证码
- PHP程序中变量的使用范围
- PhpStorm使用技巧小结
- PHP - 验证类
- php判断字符串长度 strlen()与mb_strlen()函数
- PHP UTF-8和Unicode编号互转
- PHP中读写文件
- PHP读取xml方法介绍
- phpExcel常用方法详解大全
- FragmentPagerAdapter与FragmentStatePagerAdapter区别
- php面向对象类中常用的魔术方法
- yaf性能测试(wamp环境)
- PHP入门-常用函数(i字头)
- PHP如何通过AJAX方式实现登录功能
- 最新制作ThinkPHP3.2.3完全开发手册
- 基于thinkPHP框架使用PHPExcel导出数据
- Ajax+PHP+MySQL 登陆示例