PHP中英文混排串的字节数(即占位符)的计算

首先

比较strlen和mb_strlen

$str='中文字符ab';
echo strlen($str);
echo '<br />';
echo mb_strlen($str,'UTF8');
//输出结果
//14
//6 
 

 在strlen计算时,对待一个UTF8的中文字符是3个长度,所以"中文字符ab"长度是3*4+2=14
在mb_strlen计算时,选定内码为UTF8,则会将一个中文字符当作长度1来计算,所以"中文a字1符"长度是6

利用strlen和mb_strlen这两个函数则可以联合计算出一个中英文混排的串的占位是多少(一个中文字符的占位是2,英文字符是1),计算的方法是:如果一个混排字符串有a个中文,b个英文,占位是:

$str='中文字符ab';
//计算如下
echo (strlen($str) + mb_strlen($str,'UTF8')) / 2;
//输出结果
//10 
   

 这个结果正是我想要的,正确计算出了一个字符串的字节数。

你可能感兴趣的:(PHP)