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

yipeiwu_com6年前PHP代码库
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使用Jpgraph创建柱状图展示年度收支表效果示例

php使用Jpgraph创建柱状图展示年度收支表效果示例

本文实例讲述了php使用Jpgraph创建柱状图展示年度收支表效果。分享给大家供大家参考,具体如下: 应用GD2库可以创建各式各样的图像,但是制作复杂的统计图形,仅通过GD2函数库来实现...

PHP实现的QQ空间g_tk加密算法

本文实例讲述了PHP实现的QQ空间g_tk加密算法。分享给大家供大家参考。具体如下: //G_tk计算 function getGTK($skey){ $hash = 5381;...

PHP中判断变量为空的几种方法小结

1. isset功能:判断变量是否被初始化 说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过注意:当使用isset来判断数组元素是否被初始化过时,它的效率比arra...

PHP MSSQL 分页实例

本文实例为大家分享了PHP MSSQL可刷新分页实例,具体内容如下 <?php /* '页面说明: */ $link=mssql_connect("MYSQL200...

PHP上传文件时自动分配路径的方法

本文实例讲述了PHP上传文件时自动分配路径的方法。分享给大家供大家参考。具体分析如下: 网站上传文件时,如果是小的企业站,放在一个目录还没问题,当网站大了,上传的文件多了,我们就不能放在...