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 SQL防注入代码集合
Apr 25 PHP
PHP 彩色文字实现代码
Jun 29 PHP
PHP通过iconv将字符串从GBK转换为UTF8字符集
Jul 18 PHP
PHP与SQL注入攻击防范小技巧
Sep 16 PHP
PHP Web木马扫描器代码分享
Sep 06 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
Zend Framework教程之MVC框架的Controller用法分析
Mar 07 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
Apr 19 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
May 17 PHP
php图片裁剪函数
Oct 31 PHP
Laravel多域名下字段验证的方法
Apr 04 PHP
PHP中通过getopt解析GNU C风格命令行选项
Nov 18 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后退一页表单内容保存实现方法
2012/06/17 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
JQuery与iframe交互实现代码
2009/12/24 Javascript
纯CSS打造的导航菜单(附jquery版)
2010/08/07 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
2013/11/28 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
JS中判断null的方法分析
2016/11/21 Javascript
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
详解vue-cli官方脚手架配置
2018/07/20 Javascript
使用 vue 实例更好的监听事件及vue实例的方法
2019/04/22 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
vue实现简易图片左右旋转,上一张,下一张组件案例
2020/07/31 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
vue+openlayers绘制省市边界线
2020/12/24 Vue.js
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
利用django如何解析用户上传的excel文件
2017/07/24 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
python3 pygame实现接小球游戏
2019/05/14 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
CSS3 倾斜的网页图片库实例教程
2009/11/14 HTML / CSS
伦敦平价潮流珠宝首饰品牌:Astrid & Miyu
2016/10/10 全球购物
小学生学习感言
2014/03/10 职场文书
销售代理协议书
2014/09/30 职场文书
颐和园的导游词
2015/01/30 职场文书
2015年司机工作总结
2015/04/23 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers
java设计模式--原型模式详解
2021/07/21 Java/Android
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫