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的FTP学习(一)[转自奥索]
Oct 09 PHP
实现php加速的eAccelerator dll支持文件打包下载
Sep 30 PHP
php 计算两个时间戳相隔的时间的函数(小时)
Dec 18 PHP
深入了解 register_globals (附register_globals=off 网站打不开的解决方法)
Jun 27 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
Nov 22 PHP
php保存信息到当前Session的方法
Mar 16 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
php-msf源码详解
Dec 25 PHP
PHP智能识别收货地址信息实例
Jan 05 PHP
php ajax confirm 删除实例详解
Mar 06 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
截获网站title标签之家内容的例子
2006/10/09 PHP
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
destoon实现资讯信息前面调用它所属分类的方法
2014/07/15 PHP
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
php中实现字符串翻转的方法
2017/02/22 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
json字符串之间的相互转换示例代码
2014/08/21 Javascript
JS实现控制表格内指定单元格内容对齐的方法
2015/03/30 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
jqPlot jQuery绘图插件的使用
2016/06/18 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
小程序开发实战:实现九宫格界面的导航的代码实现
2017/01/19 Javascript
js仿网易表单及时验证功能
2017/03/07 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
详解Angular4 路由设置相关
2017/08/26 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
详解koa2学习中使用 async 、await、promise解决异步的问题
2018/11/13 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
javascript实现日历效果
2019/06/17 Javascript
[02:13] 完美世界DOTA2联赛PWL DAY5集锦
2020/11/03 DOTA
用matplotlib画等高线图详解
2017/12/14 Python
详解用python实现简单的遗传算法
2018/01/02 Python
Python中SQLite如何使用
2020/05/27 Python
python3.4中清屏的处理方法
2020/07/06 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
Viking比利时:购买办公用品
2019/10/30 全球购物
Lucene推荐的分页方式是什么?
2015/12/07 面试题
中间件的定义
2016/08/09 面试题
幼儿园秋游感想
2014/03/12 职场文书
诉前财产保全担保书
2014/05/20 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
校园广播站开场白
2015/06/01 职场文书