strlen()
PHP strlen() 函数
定义和用法
strlen() 函数返回字符串的长度。
语法
strlen(string)
参数:string
描述:必需。规定要检查的字符串。
代码如下 |
复制代码 |
<?php $str=‘中文a字1符‘; echo strlen($str); echo ‘<br />‘; echo mb_strlen($str,‘UTF8‘); //输出结果 //14 //6 ?>
|
结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6
mb_strlen()函数
需要注意的是,mb_strlen并不是PHP核心函数,使用前需要确保在php.ini中加载了php_mbstring.dll,即确保
“extension=php_mbstring.dll”这一行存在并且没有被注释掉,否则会出现未定义函 数的问题。
代码如下 |
复制代码 |
<?php $str=‘中文a字1符‘; //计算如下 echo (strlen($str) + mb_strlen($str,‘UTF8‘)) / 2; echo //输出结果 //10 ?>
|
“中文a字1符” 的strlen($str)值是14,mb_strlen($str)值是6,则可以计算出“中文a字1符”的占位是10.
讲解这两者之间的区别
代码如下 |
复制代码 |
<?php
//测试时文件的编码方式要是UTF8
$str='中文a字1符';
echo strlen($str).'<br>';//14
echo mb_strlen($str,'utf8').'<br>';//6
echo mb_strlen($str,'gbk').'<br>';//8
echo mb_strlen($str,'gb2312').'<br>';//10
?>
|
结果分析:在strlen计算时,对待一个UTF8的中文字符是3个长度,所以“中文a字1符”长度是3*4+2=14,在mb_strlen
计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以“中文a字1符”长度是6 .
虽然上面函数可以简单解决一些中英文混合问题,但是不能用于实实际中,下面我来给各位朋友介绍其它比较好的办
法。
PHP获取中英文混合字符串长度的实现代码如下,1中文=1位,2英文=1位,可自行修改
代码如下 |
复制代码 |
/** * PHP获取字符串中英文混合长度 * @param $str string 字符串 * @param $$charset string 编码 * @return 返回长度,1中文=1位,2英文=1位 */ function strLength($str,$charset='utf-8'){ if($charset=='utf-8') $str = iconv('utf-8','gb2312',$str); $num = strlen($str); $cnNum = 0; for($i=0;$i<$num;$i++){ if(ord(substr($str,$i+1,1))>127){ $cnNum++; $i++; } } $enNum = $num-($cnNum*2); $number = ($enNum/2)+$cnNum; return ceil($number); }
//测试输出长度都为15 $str1 = '测试测试测试测试测试测试测试测'; $str2 = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'; $str3 = 'aa测试aa测试aa测试aa测试aaaaaa'; echo strLength($str1,'gb2312'); echo strLength($str2,'gb2312'); echo strLength($str3,'gb2312');
|
截取字符串函数
UTF8编码,在UTF8中,一个中文字符占3个字节
代码如下 |
复制代码 |
function msubstr($str, $start, $len) { $tmpstr = ""; $strlen = $start + $len; for($i = 0; $i < $strlen; $i++){ if(ord(substr($str, $i, 1)) > 127){ $tmpstr.=substr($str, $i, 3); $i+=2; }else $tmpstr.= substr($str, $i, 1); } return $tmpstr; } echo msubstr("一二三天下致公english",0,10);
|
GB2312编码,在gb2312中,一个中文字符占2个字节
代码如下 |
复制代码 |
<?php function msubstr($str, $start, $len) { //ȡ $tmpstr = ""; $strlen = $start + $len; if(preg_match('/[/d/s]{2,}/',$str)){$strlen=$strlen-2;} for($i = 0; $i < $strlen; $i++) { if(ord(substr($str, $i, 1)) > 0xa0) { $tmpstr .= substr($str, $i, 2); $i++; } else $tmpstr .= substr($str, $i, 1); } return $tmpstr; } ?>
|
编码兼容性良好的函数
代码如下 |
复制代码 |
function cc_msubstr($str, $start=0, $length, $charset="utf-8", $suffix=true) { if(function_exists("mb_substr")) return mb_substr($str, $start, $length, $charset); elseif(function_exists('iconv_substr')) { return iconv_substr($str,$start,$length,$charset); } $re['utf-8'] = "/[/x01-/x7f]|[/xc2-/xdf][/x80-/xbf]|[/xe0-/xef][/x80-/xbf]{2}|[/xf0-/xff]
[/x80-/xbf]{3}/"; $re['gb2312'] = "/[/x01-/x7f]|[/xb0-/xf7][/xa0-/xfe]/"; $re['gbk'] = "/[/x01-/x7f]|[/x81-/xfe][/x40-/xfe]/"; $re['big5'] = "/[/x01-/x7f]|[/x81-/xfe]([/x40-/x7e]|/xa1-/xfe])/"; preg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); if($suffix) return $slice."…"; return $slice; }
来自:http://www.111cn.net/phper/php-cy/46325.htm
|
分享到:
相关推荐
字符串长度函数strlen和mb_strlen的区分示例介绍_.docx
在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别。 下面通过例子,讲解这两者之间的区别。 先看例子: <?php //测试时文件的编码方式要是UTF8 ...
主要介绍了php常用字符串长度函数strlen()与mb_strlen()用法,结合实例形式分析了php字符串长度函数strlen()与mb_strlen()功能、用法及相关操作注意事项,需要的朋友可以参考下
主要介绍了C++不使用变量求字符串长度strlen函数的实现方法,实例分析了strlen函数的实现原理与不使用变量求字符串长度的实现技巧,需要的朋友可以参考下
在PHP中,strlen与mb_strlen是求字符串长度的函数,但是对于一些初学者来说,如果不看手册,也许不太清楚其中的区别
主要介绍了自己写的php中文截取函数mb_strlen和mb_substr,在服务器没mbstring库时可以使用本文函数代替,需要的朋友可以参考下
编写一个程序,求字符串的长度,不能使用strlen函数。 (代码提示:i=0;while(s[i]!= '\0')i++; 则最后i的值就是字符串长度)
求一个字符串的长度,但不能使用函数strlen()
在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样。这里主要比较一下,中英文混排的时候,两个计算结果。
在php中常见的计算字符串长度的函数有:strlen和mb_strlen,下面是对这两个函数的比较说明(编码方式UTF8)
在php中常见的计算字符串长度的函数有:strlen和mb_strlen.当字符全是英文字符的时候,两者是一样。这里主要比较一下,中英文混排的时候,两个计算结果。 先来看一个例子: 复制代码 代码如下: <?php //测试时...
主要介绍了php中strlen和mb_strlen用法,结合实例形式分析了strlen和mb_strlen针对中英文结合字符编码计算字符串长度的操作技巧,需要的朋友可以参考下
输入一个长度不超过100的字符串,求出这个字符串的长度(不能使用strlen())
C语言strlen()函数:返回字符串的长度 头文件: #include strlen()函数用来计算字符串的长度,其原型为: unsigned int strlen (char *s); 【参数说明】s为指定的字符串。 strlen()用来计算指定的字符串s 的...