PHP获取字符长度加强版dstrlen函数
大家知道,php里面的strlen获取的某些汉字和特殊字符会有差别。今天就分享一个加强版的strlen函数dstrlen函数源码,给大家一些参考,你可以直接拿去使用!
function dstrlen($str) { if(strtolower(CHARSET) != 'utf-8') { return strlen($str); } $count = 0; for($i = 0; $i < strlen($str); $i++){ $value = ord($str[$i]); if($value > 127) { $count++; if($value >= 192 && $value <= 223) $i++; elseif($value >= 224 && $value <= 239) $i = $i + 2; elseif($value >= 240 && $value <= 247) $i = $i + 3; } $count++; } return $count; }代码分析:
CHARSET为自定义的一个常量,define出来的,通常用来表示网站的编码,一般为UTF-8.
如果不是UTF-8编码的情况下,直接使用PHP原版strlen获取长度返回。
否则,每个字符循环获取它的ASCII码值,根据字符的ASCII值做对应的转换处理。