php 不同编码下的字符串长度区分


Posted in PHP onSeptember 26, 2009

UTF-8的中文字符串是三个字节

<?php 
//编码UTF-8 
echo strlen('测试文字a测试文字'); 
echo '-'; 
echo mb_strlen('测试文字a测试文字','utf-8'); 
?> 
输出:25-9

GB2312的中文字符串是二个字节
<?php 
//编码GB2312 
echo strlen('测试文字a测试文字'); 
echo '-'; 
echo mb_strlen('测试文字a测试文字','Gb2312'); 
?>

输出:17-9
在Mysql数据库(5.1以后的版本)中,如果字段类型为varchar(10)则可插入10个字符(不是字节);
所以在判断字符串的长度时需要根据文档编码来区分。
符一个简单的UTF-8下字符串截取(按字符个数截取)
<? 
/* 
* UTF-8字符串截取 
* $str 要截取的字串 
* $start 截取起始位置 
* $length 截取长度 
*/ 
function cutStr($str,$start,$length) { 
$restr = ''; 
$j = 0; 
$end = $length + $start - 1; 
$plen = strlen($str); 
for($i=0;$i<$plen;$i++) { 
$restr .= ord($str[$i])>127 ? $str[$i].$str[++$i].$str[++$i] : $str[$i]; 
$j++; 
if ($j < $start){$restr = '';} 
if ($j >= $end){break;} 
} 
$restr .=''; 
return $restr; 
} 
$str = '中新网9月24日电 二十国集团(G20)领导人第三次金融峰会今日将在美国匹兹堡召开。'; 
echo $str; 
echo '<br>'; 
echo utf8_substr($str,0,25); 
echo '<br>'; 
?>
PHP 相关文章推荐
五个PHP程序员工具
May 26 PHP
php下封装较好的数字分页方法
Nov 23 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
php实现的DateDiff和DateAdd时间函数代码分享
Aug 16 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
jquery+php实现导出datatables插件数据到excel的方法
Jul 06 PHP
php将远程图片保存到本地服务器的实现代码
Aug 03 PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
May 16 PHP
PHP版单点登陆实现方案的实例
Nov 17 PHP
php查询及多条件查询
Feb 26 PHP
php反射学习之不用new方法实例化类操作示例
Jun 14 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 PHP
php 应用程序安全防范技术研究
Sep 25 #PHP
从Web查询数据库之PHP与MySQL篇
Sep 25 #PHP
php 服务器调试 Zend Debugger 的安装教程
Sep 25 #PHP
php 代码优化的42条建议 推荐
Sep 25 #PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 #PHP
PHP 日常开发小技巧
Sep 23 #PHP
php程序之die调试法 快速解决错误
Sep 17 #PHP
You might like
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
PHP简单日历实现方法
2016/07/20 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
laravel清除视图缓存的代码
2019/10/23 PHP
php 多继承的几种常见实现方法示例
2019/11/18 PHP
javascript中加号(+)操作符的一些神奇作用
2014/06/06 Javascript
EasyUi datagrid 实现表格分页
2015/02/10 Javascript
js实现鼠标感应图片展示的方法
2015/02/27 Javascript
提升jQuery的性能需要做好七件事
2016/01/11 Javascript
基于Angularjs实现分页功能
2016/05/30 Javascript
js仿百度切换皮肤功能(html+css)
2016/07/10 Javascript
JavaScript数据结构学习之数组、栈与队列
2017/05/02 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
vue.js2.0 实现better-scroll的滚动效果实例详解
2018/08/13 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
微信小程序自定义菜单切换栏tabbar组件代码实例
2019/12/30 Javascript
在vue项目实现一个ctrl+f的搜索功能
2020/02/28 Javascript
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
python+POP3实现批量下载邮件附件
2018/06/19 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
python生成xml时规定dtd实例方法
2020/09/21 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
Otticanet英国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/02/10 全球购物
艺术专业大学生自我评价
2013/09/22 职场文书
高等教育学自荐书范文
2014/02/10 职场文书
2014政务公开实施方案
2014/02/19 职场文书
建筑结构施工求职信
2014/07/11 职场文书
党员创先争优心得体会
2014/09/11 职场文书
新店开张宣传语
2015/07/13 职场文书
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js
电脑只能进入安全模式无法正常启动的解决办法
2022/04/08 数码科技