今天忽然想到的功能,就尝试实现了一下。
这个功能在小说站中应该会经常用到,思路是使用正则将字符串里的符号全部删掉,然后再使用mb_strlen()
函数统计字符串长度即可。
具体代码如下:
<?php
/**
* PHP实现小说字数统计,不统计符号长度
* @todo 无
* @author 小黄牛
* @version v1.0.1
* @deprecated 暂不弃用
* @global 无
* @param string $chars 统计内容
* @param mixed $encoding 编码
* @return int
*/
function getStrleng($chars, $encoding='utf8') {
if ($encoding != 'utf8') return false;
// 先删除掉全部符号
$pattern = ($encoding=='utf8') ? '/[\x{4e00}-\x{9fa5}a-zA-Z0-9]/u':'/[\x80-\xFF]/';
preg_match_all($pattern, $chars, $result);
$temp = join('', $result[0]);
// 最后再查询长度
return mb_strlen($temp, "utf-8");
}
echo getStrleng('我是小黄牛,真他妈帅!');
最终输出结果9