您现在的位置: 365建站网 > 365文章 > php不同编码下的字符串长度区分

php不同编码下的字符串长度区分

文章来源:365jz.com     点击数:271    更新时间:2009-09-24 22:34   参与评论

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>';
?>

 


如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛

发表评论 (271人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
昵称:
最新评论
------分隔线----------------------------

快速入口

· 365软件
· 杰创官网
· 建站工具
· 网站大全

其它栏目

· 建站教程
· 365学习

业务咨询

· 技术支持
· 服务时间:9:00-18:00
365建站网二维码

Powered by 365建站网 RSS地图 HTML地图

copyright © 2013-2024 版权所有 鄂ICP备17013400号