THINKPHP仿Word 统计字数的方法

news/2024/4/27 20:20:51

项目需要根据文章字数自动统计字数,该方法和 word大概 一致, word 统计字数,相连的英文和数字(半角)会计算成一个字,如
good123就会统计成一个字,一下子也不知道该如何进行计算。

示例

function count_words($str)
{$str = preg_replace('/[\x80-\xff]{1,3}/', ' ', $str, -1, $n);//匹配中文或中文下的符号$str = preg_replace('/[-\_\.!@#\$%\\\^&\*\)\(\+=\{\}\[\]\/",\'<>~\·`\?:;|]/', ' ', 		      $str, -1, $j);//匹配英文下的符号$n += $j;$n += str_word_count($str);//内置函数if (preg_match('/\d+/', $str)) {preg_replace('/\d+/', ' ', $str, -1, $i);$n += $i;}return $n;
}

说明: 在PHP中,str_word_count()函数用于统计字符串中的单词数量。
语法: str_word_count(string $string [, int $format = 0 [, string $charlist]])
参数说明:
$string:必需,要统计单词数量的字符串。 $format:可选,指定返回结果的格式,取值为0、1或2,默认为0。 如果$format为0,则函数返回字符串中的单词数量(默认)。 如果$format为1,则函数返回一个数组,其中包含字符串中的每个单词。 如果$format为2,则函数返回一个关联数组,其中键名为字符串中每个单词的位置,键值为对应的单词。 $charlist:可选,指定在统计单词时忽略的字母列表。默认为空格、制表符和换行符等标点符号。

新改造方法:
经过测试,和 word 统计出来的一致,也没有上面的问题了,但是这里有个特殊字符的问题,我这里只是列出了一部分的半角状态下的特殊字符。

function count_words($str)
{//$str =characet($str);//判断是否存在替换字符$is_tihuan_count = substr_count($str, "龘");try {//先将回车换行符做特殊处理$str = preg_replace('/(\r\n+|\s+| +)/', "龘", $str);//处理英文字符数字,连续字母、数字、英文符号视为一个单词$str = preg_replace('/[a-z_A-Z0-9-\.!@#\$%\\\^&\*\)\(\+=\{\}\[\]\/",\'<>~`\?:;|]/', "m", $str);//合并字符m,连续字母、数字、英文符号视为一个单词$str = preg_replace('/m+/', "*", $str);//去掉回车换行符$str = preg_replace('/龘+/', "", $str);//返回字数return mb_strlen($str) + $is_tihuan_count;} catch (Exception $e) {return 0;}
}

再来个 js 版本的,经过测试,和 word 统计出来的一致

function Getwords(str){varsLen = 0;try {//先将回车换行符做特殊处理str = str.replace(/(\r\n +|\s +|  +)/g,"龘");//处理英文字符数字,连续字母、数字、英文符号视为一个单词str = str.replace(/[\x00 - \xff] / g,"m");  //合并字符m,连续字母、数字、英文符号视为一个单词str = str.replace(/m +/g,"*");//去掉回车换行符str = str.replace(/龘 +/g,"");//返回字数sLen = str.length;} catch (e) {}return sLen;
}

如果你有更好的方法,欢迎指导

版权声明 草邦软件开发 草邦CMS系统 草邦办公管理系统 草邦媒介资源系统
本软件不提供任何形式的明示或暗示担保,包括但不限于对适销性,特定目的的适用性和非侵权性的担保。无论是由于软件,使用或其他方式产生的,与之有关或与之有关的合同,侵权或其他形式的任何索赔,损害或其他责任,作者或版权所有者概不负责。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.cpky.cn/p/11078.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

数据结构——顺序表

大家好&#xff0c;我是小锋&#xff0c;今天我们进入顺序表的学习 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符…

基于Python实现矩阵数据的按列求和计算

下午在功能开发的时候遇上一个小功能点的实现过程中需要对矩阵数据按列求和计算&#xff0c;输出一维的列表数据&#xff0c;有点像是神经网络模型里面的Flatten一样&#xff0c;这里实现是很简单的&#xff0c;在实现的时候我突然涌现出来了一个有趣的想法&#xff0c;除了我自…

【新手小白教程】2024最新:如何轻松订阅Patreon及其支付、充值全攻略

前言 什么是Patreon Patreon是一个极具创新性的在线平台&#xff0c;它为内容创作者提供了一个独特的机会&#xff0c;使他们能够直接通过订阅服务模式从粉丝那里获得资金支持或打赏。 这个平台吸引了各种类型的创作者&#xff0c;包括艺术家、音乐家、作家、视频制作人等&…

微服务demo(二)nacos服务注册

一、服务注册 1、pom&#xff1a; 移步spring官网https://spring.io&#xff0c;查看集成Nacos所需依赖 找到对应版本点击进入查看集成说明 然后再里面找到集成配置样例&#xff0c;这里只截一张&#xff0c;其他集成内容继续向下找 2、配置文件 &#xff08;1&#xff09;有…

python初级第一次作业

一、 dayint(input("enter today day")) fdayint(input("enter num of day since today")) c((fday%7)day)%7 if c0:print("sunday") elif c1:print("monday") elif c2:print("tuesday") elif c3:print("wendnsday&quo…

景联文科技上新高质量大模型训练数据!

在过去的一年中&#xff0c;人工智能领域呈现出了风起云涌的态势&#xff0c;其中模型架构、训练数据、多模态技术、超长上下文处理以及智能体发展等方面均取得了突飞猛进的发展。 在3月24日举办的2024全球开发者先锋大会的大模型前沿论坛上&#xff0c;上海人工智能实验室的领…