今天忽然想到的功能,就尝试实现了一下。

这个功能在小说站中应该会经常用到,思路是使用正则将字符串里的符号全部删掉,然后再使用mb_strlen()函数统计字符串长度即可。

具体代码如下:

  1. <?php
  2. /**
  3. * PHP实现小说字数统计,不统计符号长度
  4. * @todo 无
  5. * @author 小黄牛
  6. * @version v1.0.1
  7. * @deprecated 暂不弃用
  8. * @global 无
  9. * @param string $chars 统计内容
  10. * @param mixed $encoding 编码
  11. * @return int
  12. */
  13. function getStrleng($chars, $encoding='utf8') {
  14. if ($encoding != 'utf8') return false;
  15. // 先删除掉全部符号
  16. $pattern = ($encoding=='utf8') ? '/[\x{4e00}-\x{9fa5}a-zA-Z0-9]/u':'/[\x80-\xFF]/';
  17. preg_match_all($pattern, $chars, $result);
  18. $temp = join('', $result[0]);
  19. // 最后再查询长度
  20. return mb_strlen($temp, "utf-8");
  21. }
  22. echo getStrleng('我是小黄牛,真他妈帅!');

最终输出结果9