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脚本的10个技巧(8)
Oct 09 PHP
在Windows系统上安装PHP运行环境文字教程
Jul 19 PHP
用PHP写的基于Memcache的Queue实现代码
Nov 27 PHP
深入Apache与Nginx的优缺点比较详解
Jun 17 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
php实现Linux服务器木马排查及加固功能
Dec 29 PHP
PHP new static 和 new self详解
Feb 19 PHP
thinkphp项目如何自定义微信分享描述内容
Feb 20 PHP
YII2框架中使用yii.js实现的post请求
Apr 09 PHP
PHP实现验证码校验功能
Nov 16 PHP
PHP中PDO事务处理操作示例
May 02 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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/09/27 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
javascript 最常用的10个自定义函数[推荐]
2009/12/26 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
检查输入的是否是数字使用keyCode配合onkeypress事件
2014/01/23 Javascript
编程语言JavaScript简介
2014/10/16 Javascript
生成二维码方法汇总
2014/12/26 Javascript
JavaScript encodeURI 和encodeURIComponent
2015/12/04 Javascript
深入浅出ES6之let和const命令
2016/08/25 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
详谈jQuery Ajax(load,post,get,ajax)的用法
2017/03/02 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
2019/02/27 jQuery
深入理解令牌认证机制(token)
2019/08/22 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
[59:00]OG vs TNC 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python 列表理解及使用方法
2017/10/27 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
python ChainMap 合并字典的实现步骤
2019/06/11 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
详解Python在使用JSON时需要注意的编码问题
2019/12/06 Python
为什么是 Python -m
2020/06/19 Python
web页面录屏实现
2019/02/12 HTML / CSS
马克华菲官方商城:Mark Fairwhale
2016/09/04 全球购物
广告学专业应届生求职信
2013/10/01 职场文书
新闻专业大学生找工作的自我评价
2013/10/30 职场文书
大学生专科学习生活的自我评价
2013/12/07 职场文书
《学会合作》教学反思
2014/04/12 职场文书
考研英语辞职信
2015/05/13 职场文书
联谊会开场白
2015/06/01 职场文书
欢送领导祝酒词
2015/08/12 职场文书
详解PHP服务器如何在有限的资源里最大提升并发能力
2021/05/25 PHP
详解Oracle块修改跟踪功能
2021/11/07 Oracle