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

(0)

相关推荐

  • php中计算未知长度的字符串哪个字符出现的次数最多的代码

    用到的函数: str_split:把字符串分割到数组中.类似的函数explode() 函数把字符串分割为数组.array_count_values:用于统计数组中所有值出现的次数.arsort:对数组进行逆向排序并保持索引关系.主要用于对那些单元顺序很重要的结合数组进行排序.$str="asdfgfdas323344##$\$fdsdfg*$**$*$**$$443563536254fas";//任意长度字符串 复制代码 代码如下: $arr=str_split($str); $arr

  • php str_pad() 将字符串填充成指定长度的字符串

    /** * 将字符串填充成指定长度的字符串(多字节安全) * @param string $str 指定被填充的字符串 * @param int $len 指定被填充的字符串的长度,如果值为负数或小于字符串的长度则不填充 * @param string $pad_str 要填充的字符串 * @param int $pad_type 指定填充的方向STR_PAD_RIGHT,STR_PAD_LEFT或STR_PAD_BOTH * @return string */ // string str_pa

  • PHP字符串长度计算 - strlen()函数使用介绍

    strlen()函数和mb_strlen()函数 在PHP中,函数strlen()返回字符串的长度.函数原型如下: 复制代码 代码如下: int strlen(string string_input); 参数string_input为要处理的字符串. strlen()函数返回字符串所占的字节长度,一个英文字母.数字.各种符号均占一个字节,它们的长度均为1.一个中午字符占两个字节,所以一个中午字符的长度是2.例如 复制代码 代码如下: <?php echo strlen("www.sunch

  • php中计算中文字符串长度、截取中文字符串的函数代码

    在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数并非PHP的核心函数,所以,它们常常有可能没有开启.当然,如果是用的自己的服务器,则只要在php.ini中开启即可.如果是用的虚拟主机,而服务器又没有开启这方面的函数的话,那就需要我们自己写出点适合咱国情的函数来了. 以下几个函数用起来颇为顺手的.不过要知道,得在utf-8环境下使用. 复制代码 代码如下: header('Content-type:text/html;cha

  • 判断是否为指定长度内字符串的php函数

    复制代码 代码如下: //---------------------------– // 函数名:CheckLengthBetween($C_char, $I_len1, $I_len2=100) // 作 用:判断是否为指定长度内字符串 // 参 数:$C_char(待检测的字符串) // $I_len1 (目标字符串长度的下限) // $I_len2 (目标字符串长度的上限) // 返回值:布尔值 // 备 注:无 //---------------------------– functio

  • PHP获取中英混合字符串长度的方法

    今晚在写框架的表单验证类时,需要判断某个字符串长度是否在指定区间内,很自然地,想到了PHP中的strlen函数. 复制代码 代码如下: $str = 'Hello world!';echo strlen($str); // 输出12 然而在PHP自带的函数中,strlen及mb_strlen都是通过计算字符串所占字节数来计算长度的,在不同的编码情况下,中文所占的字节数是不同的.在GBK/GB2312下,中文字符占2个字节,而在UTF-8下,中文字符占3个字节. 复制代码 代码如下: $str =

  • PHP判断字符串长度的两种方法很实用

    php程序中字符串长度判断,可以使用strlen. 方法一: $str = 'aaaaaa'; if(strlen($str) > 6){ echo "字符串大于6"; } 方法二: if(isset($str{6}){ } 以上两种方法,第二种效率更高些. 在PHP中,所有的变量都是用一个结构-zval来保存的,strlen虽然是直接获取其中的len,但是仍然有一次函数调用,而isset是PHP的语法结构,所以更快!所以在判断字符串是否大于或小于多少个字符时可以使用第二种方法.

  • PHP 字符串长度判断效率更高的方法

    有经验的程序员发现,php判断字符串长度,使用isset()在速度上比strlen()更快,执行效率更高.即: 复制代码 代码如下: $str = 'aaaaaa';if(strlen($str) > 6)VSif(!isset($str{6}) 用例子简单测试下,情况基本属实,isset()效率几乎是strlen()的3倍.示例: 复制代码 代码如下: <?php //使用strlen方式 $arr = "123456"; $sTime = microtime(1); i

  • php strlen mb_strlen计算中英文混排字符串长度

    比较strlen和mb_strlen 当字符全是英文字符的时候,两者是一样.这里主要比较一下,中英文混排的时候,两个计算结果.(测试时编码方式是UTF8) 复制代码 代码如下: <?php $str='中文a字1符'; echo strlen($str); echo '<br />'; echo mb_strlen($str,'UTF8'); //输出结果 //14 //6 ?> 结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以"中文a字1符&q

  • 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')

  • mysql 字符串长度计算实现代码(gb2312+utf8)

    PHP对中文字符串的处理一直困扰于刚刚接触PHP开发的新手程序员.下面简要的剖析一下PHP对中文字符串长度的处理: PHP自带的函数如strlen().mb_strlen()都是通过计算字符串所占字节数来统计字符串长度的,一个英文字符占1字节.例: $enStr = 'Hello,China!'; echo strlen($enStr); // 输出:12 而中文则不然,做中文网站一般会选择两种编码:gbk/gb2312或是utf-8.utf-8能兼容更多的字符,所以受到很多站长的喜爱.gbk与

  • JS判断字符串长度的5个方法(区分中文和英文)

    目的:计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: 复制代码 代码如下: String.prototype.gblen = function() {    var len = 0;    for (var i=0; i<this.length; i++) {      if (this.charCodeAt(i)>127 || this.charCodeAt(i)==94) {         len += 2;       } else {         len ++; 

  • PHP针对中英文混合字符串长度判断及截取方法示例

    本文实例讲述了PHP针对中英文混合字符串长度判断及截取方法.分享给大家供大家参考,具体如下: /** * * 中英混合字符串长度判断 * @param unknown_type $str * @param unknown_type $charset */ function strLength($str, $charset = 'utf-8') { if ($charset == 'utf-8') $str = iconv ( 'utf-8', 'gb2312', $str ); $num = s

  • 字符串长度函数strlen和mb_strlen的区别示例介绍

    在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样.这里主要比较一下,中英文混排的时候,两个计算结果. 在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别. 下面通过例子,讲解这两者之间的区别. 先看例子: <?php //测试时文件的编码方式要是UTF8 $str='中文a字1符'; echo strlen($str).'<br>';//14 echo

随机推荐