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 相关文章推荐
第三节 定义一个类 [3]
Oct 09 PHP
PHP的面向对象编程
Oct 09 PHP
PHP curl_setopt()函数实例代码与参数分析
Jun 02 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
php中调用其他系统http接口的方法说明
Feb 28 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
May 04 PHP
php中smarty变量修饰用法实例分析
Jun 11 PHP
PHP实现事件机制的方法
Jul 10 PHP
PHP7标量类型declare用法实例分析
Sep 26 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
php实现数字补零的方法总结
Sep 12 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 Socket技术
2013/08/02 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
php实现微信支付之现金红包
2018/05/30 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
javascript温习的一些笔记 基础常用知识小结
2011/06/22 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
JavaScript中的方法调用详细介绍
2014/12/30 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
2015/09/30 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
jquery实现焦点轮播效果
2017/02/23 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
p5.js实现简单货车运动动画
2019/10/23 Javascript
[02:33]2014DOTA2 TI每日综述 LGD涉险晋级DK闯入胜者组
2014/07/14 DOTA
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
使用grappelli为django admin后台添加模板
2014/11/18 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
解决Pycharm的项目目录突然消失的问题
2020/01/20 Python
python 项目目录结构设置
2020/02/14 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
Python包资源下载路径报404解决方案
2020/11/05 Python
关于Python错误重试方法总结
2021/01/03 Python
荷兰最大的多品牌男装连锁店:Adam Brandstore
2019/12/31 全球购物
JAVA和C++的区别
2013/10/06 面试题
市级绿色学校申报材料
2014/08/25 职场文书
有关九一八事变的演讲稿
2014/09/14 职场文书
客房部经理岗位职责
2015/02/02 职场文书
社区三八妇女节活动总结
2015/02/06 职场文书
2015感人爱情寄语
2015/02/26 职场文书
求职自我评价怎么写
2015/03/09 职场文书
微信小程序调用python模型
2022/04/21 Python
Python日志模块logging用法
2022/06/05 Python