正在PHP中,strlen与mb_strlen是求字符串长度的函数,然而关于一些初学者来讲,假如没有看手册,兴许没有太分明此中的区分。上面经过例子,解说这二者之间的区分。
先看例子:
<?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 .
行使这两个函数则能够联结较量争论出一个中英文混排的串的占位是几何(一个中文字符的占位是2,英文字符是1)
echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;
例如 “中文a字1符” 的strlen($str)值是14,mb_strlen($str)值是6,则能够较量争论出“中文a字1符”的占位是10.
echo mb_internal_encoding();
PHP内置的字符串长度函数strlen无奈正确解决中文字符串,它患上 到的只是字符串所占的字节数。关于GB2312的中文编码,strlen失去的值是汉字个数的2倍,而关于UTF-8编码的中文,就是3倍的差别了(正在 UTF-8编码下,一个汉字占3个字节)。
采纳mb_strlen函数能够较好地处理这个成绩。mb_strlen的用法以及 strlen相似,只不外它有第二个可选参数用于指定字符编码。例如失去UTF-8的字符串$str长度,能够用 mb_strlen($str,'UTF-8')。假如省略第二个参数,则会应用PHP的外部编码。外部编码能够经过 mb_internal_encoding()函数失去。
需求留意的是,mb_strlen并非PHP外围函数,应用前需求确保正在php.ini中加载了php_mbstring.dll,即确保“extension=php_mbstring.dll”这一行存正在而且不被正文掉,不然会呈现不决义函 数的成绩。
保举学习:PHP视频教程
以上就是谈谈PHP中strlen以及mb_strlen的区分的具体内容,更多请存眷资源魔其它相干文章!
标签: php php开发教程 php开发资料 php开发自学 strlen mb_strlen