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邮件类
Jan 03 PHP
在JavaScript中调用php程序
Mar 09 PHP
php for 循环语句使用方法详细说明
May 09 PHP
php gd2 上传图片/文字水印/图片水印/等比例缩略图/实现代码
May 15 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
PHP关联链接常用代码
Nov 05 PHP
PHP中substr()与explode()函数用法分析
Nov 24 PHP
thinkphp的URL路由规则与配置实例
Nov 26 PHP
Nginx服务器上安装并配置PHPMyAdmin的教程
Aug 18 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
crontab无法执行php的解决方法
Jan 25 PHP
php使用curl_init()和curl_multi_init()多线程的速度比较详解
Aug 15 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图片的二进制转换实现方法
2014/12/15 PHP
php实现网站留言板功能
2015/11/04 PHP
PHP用FTP类上传文件视频等的简单实现方法
2016/09/23 PHP
Symfony2创建基于域名的路由相关示例
2016/11/14 PHP
Yii框架模拟组件调用注入示例
2019/11/11 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
Jquery 自定义动画概述及示例
2013/03/29 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
javascript中typeof的使用示例
2013/12/19 Javascript
jQuery实现点击该行即可删除HTML表格行
2014/10/17 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
javascript基本语法
2016/05/31 Javascript
jquery easyui如何实现格式化列
2017/07/30 jQuery
详解a++和++a的区别
2017/08/30 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
js实现input密码框显示/隐藏功能
2020/09/10 Javascript
Vue v-bind动态绑定class实例方法
2020/01/15 Javascript
python 判断自定义对象类型
2009/03/21 Python
Python pickle模块用法实例分析
2015/05/27 Python
对Python的Django框架中的项目进行单元测试的方法
2016/04/11 Python
python opencv3实现人脸识别(windows)
2018/05/25 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
2019/04/03 Python
简单易懂Pytorch实战实例VGG深度网络
2019/08/27 Python
python滑块验证码的破解实现
2019/11/10 Python
tensorflow使用range_input_producer多线程读取数据实例
2020/01/20 Python
一篇文章教你用python画动态爱心表白
2020/11/22 Python
python给list排序的简单方法
2020/12/10 Python
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
党支部书记四风问题整改措施
2014/09/24 职场文书
2014年教育工作总结
2014/11/26 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
法律意见书范文
2015/06/04 职场文书
2015年高校保卫处工作总结
2015/07/23 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
老生常谈 使用 CSS 实现三角形的技巧(多种方法)
2021/04/13 HTML / CSS
Canvas三种动态画圆实现方法说明(小结)
2021/04/16 Javascript