PHP中一个好玩的性别判断扩展

今天我们来学习的一个扩展同时它也是非常小众的一个扩展,其实说白了,或许是根本没什么人用过得扩展。当然,我们也只是出于学习的目的来看看这个扩展到底是什么东西,有什么好玩的地方。

扩展说明

Gender 扩展从名称就可以看出,它是一个关于性别的扩展,这个扩展可以根据传递给它的用户姓名以及用户所在的地区国度来返回性别情况,是不是非常有意思。这个扩展直接在 PECL 网站进行下载安装即可,没有什么别的特殊的要求。

Gender 扩展是根据 Joerg Michael 这位大神所写得 gender.c 这个函数库来使用的,据说是包含 54 个国家地区的 40000 多个名字。具体的情况我们在下面的测试代码中好好看看它的效果。

根据姓名判断性别

在使用这个扩展的时候,我们要先准备一个函数,其实就是方便我们后面的测试操作的。


$gender = new Gender\Gender;function showGender($name, $country)
{global $gender;$result = $gender->get($name, $country);var_dump($result);$data = $gender->country($country);var_dump($data);switch ($result) {case Gender\Gender::IS_FEMALE:printf("%s:女性 - %s\n", $name, $data['country']);break;case Gender\Gender::IS_MOSTLY_FEMALE:printf("%s:大部分情况下是女性 -  %s\n", $name, $data['country']);break;case Gender\Gender::IS_MALE:printf("%s:男性 -  %s\n", $name, $data['country']);break;case Gender\Gender::IS_MOSTLY_MALE:printf("%s:大部分情况下是男性 - %s\n", $name, $data['country']);break;case Gender\Gender::IS_UNISEX_NAME:printf("%s:中性名称(不好确认性别) - \n", $name, $data['country']);break;case Gender\Gender::IS_A_COUPLE:printf("%s:男女都适用 - %s\n", $name, $data['country']);break;case Gender\Gender::NAME_NOT_FOUND:printf("%s:对应的国家字典中没有找到相关信息 -  %s\n", $name, $data['country']);break;case Gender\Gender::ERROR_IN_NAME:echo "给定的姓名信息错误\n";break;default:echo "错误!\n";break;}
}

首先,实例化一个 Gender 对象,然后定义一个函数。在这个函数中,我们打印了 Gender 类中的 get() 方法所返回的信息,它返回的信息就是 $gender 对象根据指定参数所返回的性别判定值。然后我们通过下面的 switch 来判断返回的值是否与类中的常量所对应,这样就知道返回的结果是什么了。country() 方法获得的是指定国家地区的详细信息,我们在后面的测试代码中可以看到它们的输出。

showGender("William", Gender\Gender::USA);
// int(77)
// array(2) {
//   ["country_short"]=>
//   string(3) "USA"
//   ["country"]=>
//   string(6) "U.S.A."
// }
// William:男性 -  U.S.A.showGender("Ayumi Hamasaki", Gender\Gender::JAPAN);
// int(70)
// array(2) {
//   ["country_short"]=>
//   string(3) "JAP"
//   ["country"]=>
//   string(5) "Japan"
// }
// Ayumi Hamasaki:女性 - Japan

接下来就是简单地进行测试,先是测试一个英文的名字,并且指定国家地区为 USA ,也就是美国。可以看到 get() 返回的值是 77 ,对应的是 IS_MALE 的常量值,也就是这是一个男性的名称。country() 函数返回的内容是国家的全称与简写信息。在第二段测试中,我们给定的是一个日本女性的名字(滨崎步的英文名字),可以看到也正常返回了女性以及国家的相关信息。那么,这个扩展支持中文吗?

抱歉,它是不支持中文的,所以我们需要使用中文的拼音名称,而且对于指定国家地区为 CHINA 的话,使用拼音名称返回的都是中性的名称(不分男女都可以使用的名字)。

howGender("Gang Qiang", Gender\Gender::CHINA);
// int(63)
// array(2) {
//   ["country_short"]=>
//   string(3) "CHN"
//   ["country"]=>
//   string(5) "China"
// }
// Gang Qiang:中性名称(不好确认性别)showGender("Anna Li", Gender\Gender::CHINA);
// int(70)
// array(2) {
//   ["country_short"]=>
//   string(3) "CHN"
//   ["country"]=>
//   string(5) "China"
// }
// Anna Li:女性 - China

额,貌似很坑啊,这东西对我们来说并没有什么实际的用处。由于这个扩展的资料非常少,面向中文的资料更是完全查不到,所以我也不知道它到底是不是根据拼音来确定中文名称的。完全的中文会直接返回 NAME_NOT_FOUND 信息。所以,大家图个乐就好啦!

总结

不得不说,如果没有刷文档还真不知道 PHP 中竟然还提供了这样的一个扩展库。其实有兴趣的同学完全可以尝试自己写一个能够判断中文名称的类似的扩展库出来,虽说在实际的业务开发中可能并不常用,但完全可以当做一个开源的练手机会提升一下自己的 C 语言技术。

测试代码:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202011/source/1.PHP中一个好玩的性别判断扩展.php

参考文档:

https://www.php.net/manual/zh/book.gender.php

PHP中一个好玩的性别判断扩展相关推荐

  1. python中一个可以通过名字判断性别的函数

    查资料的时候偶然发现的一个小函数,准确率不是太高,可以娱乐娱乐import ngender#男性 概率 #('male', 0.9836229687547046)#女性 概率 #('female', ...

  2. Java:判断一个字符串中是否存在另一个字符子串以及判断一个字符串中是否存在指定字符

    Java:判断一个字符串中包含指定字符子串,判断一个字符串中存在指定字符 字符串的contains方法可以判断一个字符串中是否存在另一个字符子串,示例如下 String Str = "Hel ...

  3. LeetCode每日一题——1812. 判断国际象棋棋盘中一个格子的颜色

    LeetCode每日一题系列 题目:1812. 判断国际象棋棋盘中一个格子的颜色 难度:简单 文章目录 LeetCode每日一题系列 题目 示例 思路 题解 题目 给你一个坐标 coordinates ...

  4. Excel-判断一个文本字符串中是否包含数字! 判断一个文本字符串是否是纯汉字!...

    0.判断一个文本字符串中是否包含数字!/判断一个文本字符串是否是纯汉字! 公式=IF(LENB(A1)=2*LEN(A1),"都是汉字","含有非汉字字符") ...

  5. oracle 判断数字是否为整数,怎么判断JS中一个数字是否为整数?

    怎么判断JS中一个数字是否为整数? 面试的时候遇到的问题,然后小疯回去查就几种方法,姑且一看,请多指正. 方法一: var ss =$("#ss").val(); var sss ...

  6. 在篮球运动中,领先多少分才安全。体育作家Bill 开发了一个算法,用于判断篮球比赛中怎样的领先优势是不可超越的

    在篮球运动中,领先多少分才安全.体育作家Bill 开发了一个算法,用于判断篮球比赛中怎样的领先优势是不可超越的.他的算法如下: (1) 获取领先一队当前的得分数 (2) 得分数减去三分 (3) 如果目 ...

  7. LeetCode简单题之判断国际象棋棋盘中一个格子的颜色

    题目 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标.下图是国际象棋棋盘示意图. 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 false ...

  8. LeetCode 1812. 判断国际象棋棋盘中一个格子的颜色

    文章目录 1. 题目 2. 解题 1. 题目 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标.下图是国际象棋棋盘示意图. 如果所给格子的颜色是白色,请你返回 ...

  9. c语言中整数和实数能比较大小吗,c语言中,输入一个数字,怎么判断那个数字是整数还是实数,代码如下,输入实数后出现了死循环...

    c语言中,输入一个数字,怎么判断那个数字是整数还是实数,代码如下,输入实数后出现了死循环 int main(void) { SEQLIST a; int b;//用于保存输入选择的数字 a.len=0 ...

  10. 图解LeetCode——1812. 判断国际象棋棋盘中一个格子的颜色(难度:简单)

    一.题目 给你一个坐标 coordinates ,它是一个字符串,表示国际象棋棋盘中一个格子的坐标.下图是国际象棋棋盘示意图. 如果所给格子的颜色是白色,请你返回 true,如果是黑色,请返回 fal ...

最新文章

  1. 程序员常用网站收藏[定期更新]——csdn博客
  2. 如何确定VS编译器版本--_MSC_VER || #if _MSC_VER 1000 #pragma once #endif
  3. MMdnn Visualizer网络可视化
  4. 如何将sql server数据库转化成sqlite数据库
  5. C#关闭子窗口而不释放子窗口对象的问题解决
  6. 雷林鹏分享:CSS Id 和 Class
  7. ICE通信之IceGrid服务(一)
  8. php 8.0 jit,PHP 8.0 正式版发布,性能提升 10%
  9. 关于Unity中DOTween插件的使用(专题一)
  10. JVM(四)—一道面试题搞懂JVM类加载机制
  11. java 坦克大战设计论文,java坦克大战毕业设计论文
  12. 《麦肯锡方法》读书笔记12
  13. linux的防火墙端口配置
  14. 【Java教程】UDP实现群聊聊天室
  15. Python数据可视化:5段代码搞定散点图绘制与使用,值得收藏
  16. 滴滴AI负责人叶杰平:你的每一次出行,都已有AI落地的助力
  17. java--加强之 eclipse开发工具
  18. 每次都戳到我的笑点,那个不同寻常的自黑达人,雷军
  19. python技术简介_Python简介
  20. jQuery实现类似淘宝轮播图

热门文章

  1. 微信云开发实现点赞收藏评论功能
  2. 河南省第二届“金盾信安杯”网络安全大赛 WriteUp Crypto+Misc
  3. github注册关于QQ邮箱验证码问题
  4. CRAPS又称花旗骰,是美国拉斯维加斯非常受欢迎的一种的桌上赌博游戏。该游戏使用两粒骰子,玩家通过摇两粒骰子得出的点数进行游戏。
  5. 金蝶KIS专业版V14.1即时库存查询表添加字段条形码|商品描述|最低最高存量
  6. SAP 采购订单入库——库存查询
  7. 适合老爸用的在线的LaTeX数学公式编辑器
  8. C语言pow函数的调用
  9. #507 Wiggle Sort II
  10. 【游戏开发创新】自学Blender建模,自制孔明灯,在Unity中点亮整个星空,愿新年,胜旧年(Unity | 建模 | 粒子系统 | 预设)