一般来说大家知道英文字符占一个字节,而中文字符gbk占两个字符,utf8占三个字符,很多人印象中php计算字符串长度就是strlen()函数,其实不然,它计算的是字节的长度而非字符的长度,那么如何获取一个字符串中字符的长度呢?还有有mb_strlen().
echo $str = 'PHP点点通';
echo strlen($str); //3*1+3*3=12
echo mb_strlen($str, 'gb2312'); //3*1+3*2=9
echo mb_strlen($str, 'utf-8'); //6可恶的是,mb系列的函数并不是PHP核心函数,默认没有开启的,还有一个超简单的方法,通过正则将字符串分解为字符个体,计算字符的个数即为字符串的长度,
<?php
function _strlen($str)
{
preg_match_all("/./us", $str, $matches);
return count(current($matches));
}
echo _strlen("PHP点点通"); //6
php中计算未知长度的字符串哪个字符出现的次数最多的代码
第一种方法:
用到的函数:
str_split:把字符串分割到数组中。类似的函数explode() 函数把字符串分割为数组。array_count_values:用于统计数组中所有值出现的次数。
arsort:对数组进行逆向排序并保持索引关系。
主要用于对那些单元顺序很重要的结合数组进行排序。$str="asdfgfdas323344##$\$fdsdfg*$**$*$**$$443563536254fas";//任意长度字符串
代码如下:
输出:
第二种方法:
用到的函数:
array_unique:删除数组中重复的值。substr_count:计算子串在字符串中出现的次数。
代码如下:
PHP 字符串长度判断效率更高的方法
在php里当需要判断一个字符串长度时,我们首先想到的是strlen()函数,不错,strlen()返回的就是字符串的长度,这样使用没有任何问题。不过,如果要从php程序优化的角度来看,使用strlen()判断字符串长度未免是最好的写法
有经验的程序员发现,php判断字符串长度,使用isset()在速度上比strlen()更快,执行效率更高。
即:
用例子简单测试下,情况基本属实,isset()效率几乎是strlen()的3倍。
示例:
输出:0.00035595893859863
输出:0.00019097328186035
isset()速度为什么比strlen()更快
strlen()函数函数执行起来相当快,因为它不做任何计算,只返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。
在某些情况下,使用isset() 技巧可以加速执行你的代码。因为与isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。
因此调用isset()比strlen()快。
php中关于长度计算容易混淆的问题分析
本文实例讲述了php中关于长度计算容易混淆的问题。
经常被php中数组和字符串的字符函数搞晕,下面总结一下:
strlen($string)函数:计算字符串的长度;
sizeof($string,$mode)函数:它是count()函数的别名,count()函数如下:
int count ( mixed var [, int mode] )
返回 var 中的单元数目,通常是一个 array,任何其它类型都只有一个单元。
对于对象,如果安装了 SPL,可以通过实现 Countable 接口来调用 count()。该接口只有一个方法 count(),此方法返回 count() 函数的返回值。
如果 var 不是数组类型或者实现了 Countable 接口的对象,将返回 1,有一个例外,如果 var 是 NULL 则结果是 0。
注: 可选的 mode 参数自 PHP 4.2.0 起可用。
如果可选的 mode 参数设为 COUNT_RECURSIVE(或 1),count() 将递归地对数组计数。对计算多维数组的所有单元尤其有用。mode 的默认值是 0。count() 识别不了无限递归。
总之,字符串用strlen(),数组用sizeof()即可。
《php操作office文档技巧总结(包括word,excel,access,ppt)》、《PHP数组(Array)操作技巧大全》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数学运算技巧总结》、《php正则表达式用法总结》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》及《php常见数据库操作技巧汇总》