php中str_word_count统计单词数_php支持多语言与标点忽略统计方法

str_word_count函数适用于英文单词统计,支持三种模式:返回总数、单词数组或带位置的关联数组;但对中文等无空格分隔语言无效,需用正则preg_replace配合p{L}和p{N}清理标点并分割空白来粗略统计多语言文本;精确处理中文建议使用SCWS或Jieba分词扩展。

php中str_word_count统计单词数_php支持多语言与标点忽略统计方法

在PHP中,str_word_count() 函数常用于统计字符串中的单词数量。默认情况下,它主要针对英文文本设计,能识别由空格或标点分隔的字母组合为单词。但在处理多语言(如中文、日文、阿拉伯文等)或包含复杂标点符号的文本时,该函数的表现有限,需要结合其他方法进行优化。

str_word_count() 基本用法

该函数有三种返回模式:

0(默认):返回单词总数 1:返回包含所有单词的数组 2:返回关联数组,键为单词起始位置,值为单词内容

$str = "Hello, welcome to PHP world!";echo str_word_count($str); // 输出: 5print_r(str_word_count($str, 1)); // 输出: Array ( [0] => Hello [1] => welcome [2] => to [3] => PHP [4] => world )

注意:该函数会忽略常见标点符号(如逗号、句号),但只对拉丁字母有效,无法识别中文、日文等非空格分隔语言的“单词”。

多语言支持问题与解决方案

对于中文、日文、泰文等语言,由于没有明显的单词边界(不像英文用空格分隔),str_word_count() 无法正确识别词汇。例如:

立即学习“PHP免费学习笔记(深入)”;

$str = "你好世界,欢迎使用PHP!";echo str_word_count($str); // 输出: 0

这是因为 str_word_count 只识别 a-zA-Z 字符。要实现多语言单词或词语统计,需采用以下策略:

使用正则表达式匹配Unicode文字块:通过 preg_match_all 匹配各类语言的文字单位 按字符或词语切分中文文本:借助第三方分词库(如 SCWS 中文分词) 自定义规则过滤标点:去除或忽略常见标点符号后再统计

支持多语言与忽略标点的统计方法

以下是一个增强型函数,可统计多种语言的“词”或“字符组合”,并自动忽略常见标点:

function count_words_multilingual($str) {    // 移除标点符号,保留文字字符    $clean = preg_replace('/[^p{L}p{N}s]/u', ' ', $str);    // 按空白字符分割,并过滤空项    $words = preg_split('/s+/u', $clean, -1, PREG_SPLIT_NO_EMPTY);    return count($words);}// 示例$text = "Hello, 你好!مرحبا، ? 123";echo count_words_multilingual($text); // 输出: 5

说明:

p{L} 匹配任意语言的字母(包括中文、阿拉伯文、俄文等) p{N} 匹配数字 u 修饰符启用UTF-8模式 先清理标点,再以空格类字符分割,模拟“单词”概念

此方法虽不能精确分词(如中文仍按单字或连续字块处理),但可用于粗略统计文本中的语言单元。

进阶建议:结合分词扩展

若需精确处理中文,推荐使用:

SCWS(Simple Chinese Word Segmentation):专为中文设计的分词引擎,PHP 有扩展支持 Jieba 分词(PHP移植版):基于Python Jieba 的PHP实现,支持精准模式分词

这些工具能将“我喜欢编程”正确切分为 [“我”, “喜欢”, “编程”],从而实现真正意义上的“词”统计。

基本上就这些。str_word_count 适合英文环境,多语言场景需依赖正则或专用分词工具来准确统计。关键是根据语言类型选择合适的方法,并合理处理标点干扰。

以上就是php中str_word_count统计单词数_php支持多语言与标点忽略统计方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1338508.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月13日 02:07:21
下一篇 2025年12月13日 02:07:41

相关推荐

  • php显示和实际时间不同的解决

    答案是PHP时间与实际不一致主因是时区设置错误,可通过date_default_timezone_set(‘Asia/Shanghai’)设置时区,修改php.ini的date.timezone项并重启服务,检查系统时间并用timedatectl和ntpdate同步,避免重复…

    好文分享 2025年12月13日
    000
  • php中如何设计队列

    答案:PHP中设计队列需根据场景选择方式。1. 数组模拟:用array_push和array_shift实现,适合小数据量;2. SplQueue类:基于双链表,提供enqueue/dequeue,性能更优;3. 持久化队列:通过数据库或文件存储,保证任务不丢失,适用于邮件发送等异步任务;4. 消息…

    2025年12月13日
    000
  • php变量中的两种复合类型

    PHP中的复合类型包括数组和对象。数组是有序映射,支持索引、关联和多维形式,适用于存储多个值;对象是类的实例,封装属性和方法,通过new创建,适合复杂逻辑处理。根据需求选择可提升代码可读性与维护性。 PHP中的复合类型指的是可以存储多个值的数据类型。在PHP中,有两种主要的复合类型:数组(array…

    2025年12月13日
    000
  • php如何获取mysql存储过程返回值_php调用存储过程与bindParam获取out参数

    首先利用MySQL用户变量调用存储过程并获取OUT参数,通过PDO执行CALL语句并将结果存入用户变量,再用SELECT查询用户变量获取返回值。例如调用CALL GetUserCount(@user_count)后,执行SELECT @user_count取得结果;对于多个OUT参数,如CALL G…

    2025年12月13日
    000
  • php变量的引用赋值使用

    引用赋值使多个变量共享同一内存地址,修改一个会影响另一个。使用“&”符号实现,如$var2 = &$var1;此时两者指向相同数据,改变任一变量值,另一变量同步变化。典型应用包括函数传参修改外部变量、遍历大数组提升性能,如foreach($arr as &$value)可直接…

    2025年12月13日
    000
  • php数据整理中怎么把数组转为哈希映射_php快速查找哈希表构建与冲突解决方法

    使用关联数组可实现PHP中高效查找。一、通过$id为键存储数据,如foreach($data as $item){$hashMap[$item[‘id’]]=$item;},实现O(1)查找。二、SplObjectStorage支持对象作键,用$storage->att…

    2025年12月13日
    000
  • php定义常量方法的区别

    答案:PHP中定义常量有两种方式,define()函数用于运行时定义全局常量,支持动态命名和条件定义,可在任意位置调用,包括函数或条件语句内,适合根据环境灵活设置;而const是编译时定义的语言结构,只能在顶层作用域使用,名称必须为字面量,不支持动态拼接,但性能更高且可在类中声明常量。从PHP 5.…

    2025年12月13日
    000
  • php变量有哪些特殊类型

    PHP特殊类型包括:1. resource用于外部资源引用,如数据库连接或文件句柄;2. null表示无值状态,变量未赋值或被销毁时为null;3. callable指可调用的回调函数,支持函数名、闭包、类方法等;4. mixed和void是伪类型,mixed表示任意类型,void表示无返回值,仅用…

    2025年12月13日
    000
  • php将正数转为负数的方法

    使用-abs($number)可将正数转为负数,该方法通过取绝对值再取反,确保结果非正,适用于所有数值类型,推荐此方式因其简洁可靠。 在PHP中,将正数转换为负数有多种方法,最常见的是通过简单的数学运算实现。核心思路是确保结果为非正数(即小于或等于0),即使输入已经是负数或零,也能正确处理。 使用取…

    2025年12月13日
    000
  • php如何将时间戳转为友好时间显示_php计算天时分秒与中文描述格式化

    首先给出实现方法:通过时间差判断显示“刚刚”“X分钟前”等;再计算天、时、分、秒用于倒计时;最后扩展支持“昨天”“X天前”等更优体验,需注意时区设置以保证准确性。 在PHP中,将时间戳转换为友好时间显示(如“刚刚”、“3分钟前”、“2小时前”)是一种常见需求,尤其用于社交、评论、消息等场景。除了中文…

    2025年12月13日
    000
  • php如何生成一次性密码otp_php基于totp算法与时间窗口实现双因素认证

    TOTP是一种基于时间的一次性密码,通过共享密钥和时间戳生成每30秒更新的6位密码,PHP可借助otphp库或手动实现算法完成OTP生成与验证。 在双因素认证(2FA)中,基于时间的一次性密码(TOTP)是一种广泛应用的安全机制。PHP可以通过开源库或手动实现 TOTP 算法来生成一次性密码。以下是…

    2025年12月13日
    000
  • php中array_intersect_key按 key取交集_php保留指定键的数组筛选与合并技巧

    array_intersect_key()用于按键名比较数组并返回交集,常用于筛选允许字段、合并配置及清洗参数。1. 保留第一个数组中其他数组也存在的键名对应元素;2. 结合array_flip()实现白名单过滤表单数据;3. 与+操作符配合合并配置并限制合法键;4. 支持多数组求共同键名,如三个数…

    2025年12月13日
    000
  • php中_invoke魔术方法让对象像函数php对象直接调用与参数传递示例

    __invoke方法允许对象被当作函数调用,提升灵活性。1. 定义__invoke后,对象可直接用括号调用;2. 可传参并返回值,如Calculator类执行运算;3. 常用于回调、中间件等场景,如AuthMiddleware处理请求。 在PHP中,__invoke 是一个魔术方法,它允许将对象当作…

    2025年12月13日
    000
  • php.ini中屏蔽所有错误的方法

    关闭错误显示并屏蔽所有错误报告,需设置display_errors=Off、display_startup_errors=Off和error_reporting=0,可选log_errors=Off但不推荐,修改后重启Web服务生效。 在 php.ini 中屏蔽所有错误和警告信息,主要是通过设置错误…

    2025年12月13日
    000
  • php curl返回错误码60的解决办法

    错误码60是因SSL证书验证失败,主因是缺少CA证书包;推荐下载cacert.pem并配置php.ini的curl.cainfo指向该文件,或临时禁用CURLOPT_SSL_VERIFYPEER仅作测试。 PHP cURL 返回错误码60,通常是因为 SSL 证书验证失败。这表示 cURL 请求无法…

    2025年12月13日
    000
  • php中chdir改变当前工作目录_php路径依赖问题与恢复原始路径技巧

    使用getcwd()保存原始路径,优先采用绝对路径,并通过try-finally封装chdir()操作,可有效避免路径依赖问题。1. 调用chdir()会改变相对路径解析基础;2. 用getcwd()保存并恢复原始目录;3. 推荐使用__DIR__等绝对路径方案;4. 封装runInDir函数安全切…

    2025年12月13日
    000
  • php中_toString魔术方法触发条件php对象转字符串报错与调试方法

    答案:__toString 方法用于定义对象转字符串的行为,需返回字符串以避免致命错误。其在 echo、拼接、双引号等场景触发,常见错误包括未返回字符串、未定义方法或在方法内抛出异常。正确实现应确保始终返回字符串,如 return ‘User: ‘ . $this->n…

    2025年12月13日
    000
  • php中array_multisort结合arsort多维排序_php多列排序方向与关联键保留方法

    使用array_multisort可实现多维数组按多列排序并保留键名,先提取排序列如$scores和$ages,再调用array_multisort($scores, SORT_DESC, $ages, SORT_ASC, $users)完成排序,确保数据关联性不被破坏。 在PHP中,对多维数组进行…

    2025年12月13日
    000
  • php数据整理中怎么按出现位置筛选数据_php按索引范围或条件位置筛选数组元素

    可通过array_slice()按索引范围截取数组,结合array_keys()与array_intersect_key()基于键位置筛选,或使用foreach配计数器、array_filter引用外部状态按位置过滤数据。 如果您需要从PHP数组中根据元素出现的位置或索引范围提取特定数据,可以通过多…

    2025年12月13日
    000
  • PHP中hash table有哪些特点

    PHP哈希表支持混合键类型、保持插入顺序、高效操作、内置遍历指针并自动处理扩容与冲突,是数组和对象实现的核心,兼顾性能与灵活性,有助于高效编程。 PHP中的Hash Table(哈希表)是其核心数据结构之一,广泛用于实现数组、对象属性、符号表等。它在底层支撑了PHP的灵活性和高效性。以下是PHP中哈…

    2025年12月13日
    000

发表回复

登录后才能评论
关注微信