日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

PHP中一個好玩的性別判斷擴展

 硬核項目經(jīng)理 2021-06-21

PHP中一個好玩的性別判斷擴展

今天我們來學習的一個擴展同時它也是非常小眾的一個擴展,其實說白了,或許是根本沒什么人用過得擴展。當然,我們也只是出于學習的目的來看看這個擴展到底是什么東西,有什么好玩的地方。

擴展說明

Gender 擴展從名稱就可以看出,它是一個關(guān)于性別的擴展,這個擴展可以根據(jù)傳遞給它的用戶姓名以及用戶所在的地區(qū)國度來返回性別情況,是不是非常有意思。這個擴展直接在 PECL 網(wǎng)站進行下載安裝即可,沒有什么別的特殊的要求。

Gender 擴展是根據(jù) Joerg Michael 這位大神所寫得 gender.c 這個函數(shù)庫來使用的,據(jù)說是包含 54 個國家地區(qū)的 40000 多個名字。具體的情況我們在下面的測試代碼中好好看看它的效果。

根據(jù)姓名判斷性別

在使用這個擴展的時候,我們要先準備一個函數(shù),其實就是方便我們后面的測試操作的。


$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:對應的國家字典中沒有找到相關(guān)信息 -  %s\n", $name, $data['country']);
            break;

        case Gender\Gender::ERROR_IN_NAME:
            echo "給定的姓名信息錯誤\n";
            break;

        default:
            echo "錯誤!\n";
            break;

    }
}

首先,實例化一個 Gender 對象,然后定義一個函數(shù)。在這個函數(shù)中,我們打印了 Gender 類中的 get() 方法所返回的信息,它返回的信息就是 $gender 對象根據(jù)指定參數(shù)所返回的性別判定值。然后我們通過下面的 switch 來判斷返回的值是否與類中的常量所對應,這樣就知道返回的結(jié)果是什么了。country() 方法獲得的是指定國家地區(qū)的詳細信息,我們在后面的測試代碼中可以看到它們的輸出。

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

接下來就是簡單地進行測試,先是測試一個英文的名字,并且指定國家地區(qū)為 USA ,也就是美國??梢钥吹?get() 返回的值是 77 ,對應的是 IS_MALE 的常量值,也就是這是一個男性的名稱。country() 函數(shù)返回的內(nèi)容是國家的全稱與簡寫信息。在第二段測試中,我們給定的是一個日本女性的名字(濱崎步的英文名字),可以看到也正常返回了女性以及國家的相關(guān)信息。那么,這個擴展支持中文嗎?

抱歉,它是不支持中文的,所以我們需要使用中文的拼音名稱,而且對于指定國家地區(qū)為 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

額,貌似很坑啊,這東西對我們來說并沒有什么實際的用處。由于這個擴展的資料非常少,面向中文的資料更是完全查不到,所以我也不知道它到底是不是根據(jù)拼音來確定中文名稱的。完全的中文會直接返回 NAME_NOT_FOUND 信息。所以,大家圖個樂就好啦!

總結(jié)

不得不說,如果沒有刷文檔還真不知道 PHP 中竟然還提供了這樣的一個擴展庫。其實有興趣的同學完全可以嘗試自己寫一個能夠判斷中文名稱的類似的擴展庫出來,雖說在實際的業(yè)務開發(fā)中可能并不常用,但完全可以當做一個開源的練手機會提升一下自己的 C 語言技術(shù)。

測試代碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202011/source/1.PHP中一個好玩的性別判斷擴展.php

參考文檔:

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

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多