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 相关文章推荐
APMServ使用说明
Oct 23 PHP
彻底杜绝PHP的session cookie错误
Aug 09 PHP
PHP MVC模式在网站架构中的实现分析
Mar 04 PHP
深入解析php中的foreach函数
Aug 31 PHP
PHP5.5和之前的版本empty函数的不同之处
Jun 13 PHP
php实现Mysql简易操作类
Oct 11 PHP
php日期操作技巧小结
Jun 25 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
PHP入门教程之会话控制技巧(cookie与session)
Sep 11 PHP
Ajax和PHP正则表达式验证表单及验证码
Sep 24 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 PHP
基于PHP实现堆排序原理及实例详解
Jun 19 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
php minixml详解
2008/07/19 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
document.all与WEB标准
2020/05/13 Javascript
JavaScript 大数据相加的问题
2011/08/03 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
JavaScript实现刷新不重记的倒计时
2016/08/10 Javascript
浅谈jquery之on()绑定事件和off()解除绑定事件
2016/10/26 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
vue-cli整合vuex的时候,修改actions和mutations,实现热部署的方法
2018/09/19 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
2020/07/24 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
python私有属性和方法实例分析
2015/01/15 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
2016/03/30 Python
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
Python 对输入的数字进行排序的方法
2018/06/23 Python
Python根据文件名批量转移图片的方法
2018/10/21 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
解决django FileFIELD的编码问题
2020/03/30 Python
将keras的h5模型转换为tensorflow的pb模型操作
2020/05/25 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
CSS3 边框效果
2019/11/04 HTML / CSS
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
党校个人自我鉴定范文
2014/03/28 职场文书
合同协议书格式
2014/04/18 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
公司财务人员岗位职责
2015/04/14 职场文书
财务人员入职担保书
2015/09/22 职场文书
《灰雀》教学反思
2016/02/19 职场文书
《雷雨》教学反思
2016/02/20 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书