Maison > Article > développement back-end > Une extension amusante de jugement de genre en PHP
Une extension amusante de jugement de genre en PHP
Aujourd'hui, nous allons découvrir une extension qui est également très niche. En fait, pour parler franchement, elle n'est peut-être pas utilisée. par n'importe qui. Bien sûr, nous sommes juste à des fins d’apprentissage pour voir ce qu’est cette extension et ce qu’elle est intéressante.
Description de l'extension
L'extension de genre peut être vue à partir du nom, c'est une extension de genre, cette extension peut être basée sur le nom d'utilisateur qui lui est transmis et celui de l'utilisateur localisation N’est-il pas très intéressant de restaurer le statut de genre dans les pays de la région ? Cette extension peut être téléchargée et installée directement à partir du site Web PECL, et il n'y a aucune autre exigence particulière.
L'extension Gender est basée sur la bibliothèque de fonctions Gender.c écrite par le grand maître Joerg Michael. Elle contiendrait plus de 40 000 noms dans 54 pays et régions. Pour des situations spécifiques, nous examinerons de plus près son effet dans le code de test ci-dessous.
Dernières informations d'ouverture des cours : La 16e période du cours en ligne PHP full-stack débutera à 20h00 (6h28) ce soir ! Pour plus de détails, voir : https://www.php.cn/k.html
Juger le sexe en fonction du nom
Utilisation de ceci Lors de l'expansion, nous devons d'abord préparer une fonction, qui sert en fait à faciliter nos opérations de test ultérieures.
$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; } }
Tout d'abord, instanciez un objet Gender puis définissez une fonction. Dans cette fonction, nous imprimons les informations renvoyées par la méthode get() dans la classe Gender. Les informations qu'elle renvoie sont la valeur de détermination du sexe renvoyée par l'objet $gender en fonction des paramètres spécifiés. Ensuite, nous utilisons le commutateur suivant pour déterminer si la valeur renvoyée correspond à la constante de la classe, afin que nous sachions quel est le résultat renvoyé. La méthode country() obtient les informations détaillées du pays et de la région spécifiés, et nous pouvons voir leur sortie dans le code de test suivant.
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
L'étape suivante consiste simplement à le tester. Tout d'abord, testez un nom anglais et spécifiez le pays et la région comme USA, qui sont les États-Unis. Vous pouvez voir que la valeur renvoyée par get() est 77, ce qui correspond à la valeur constante de IS_MALE, ce qui signifie qu'il s'agit d'un nom masculin. Le contenu renvoyé par la fonction country() est le nom complet et l’abréviation du pays. Lors du deuxième test, on nous a donné le nom d’une Japonaise (le nom anglais d’Ayumi Hamasaki), et vous pouvez voir que les informations sur la femme et le pays ont été renvoyées normalement. Alors, cette extension prend-elle en charge le chinois ?
Désolé, il ne prend pas en charge le chinois, nous devons donc utiliser le nom chinois pinyin, et si le pays et la région spécifiés sont la CHINE, le nom pinyin renverra un nom neutre (quel que soit le sexe) (nom utilisé) .
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
Euh, cela ressemble à un piège. Cette chose n'a aucune utilité pratique pour nous. Comme il y a très peu d’informations sur cette extension et que les informations orientées vers le chinois sont totalement indisponibles, je ne sais pas si elle détermine le nom chinois basé sur le pinyin. Le chinois complet renverra directement les informations NAME_NOT_FOUND. Alors, amusez-vous tous !
Résumé
Je dois dire que si je n'avais pas lu la documentation, je n'aurais jamais su que PHP fournit même une telle bibliothèque d'extensions. En fait, les étudiants intéressés peuvent essayer d'écrire une bibliothèque d'extensions similaire capable de déterminer les noms chinois. Bien qu'elle ne soit pas couramment utilisée dans le développement commercial réel, elle peut être utilisée comme pratique open source pour améliorer la technologie du langage C.
测试代码: https://github.com/zhangyue0503/dev-blog/blob/master/php/202011/source/1.PHP中一个好玩的性别判断扩展.php 参考文档: https://www.php.net/manual/zh/book.gender.php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!