kr-digital / names-detector
Detect name and gender from a given string
Installs: 2 924
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 3
Forks: 2
Open Issues: 0
Requires
- php: >=7.1.0
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16.3
- phpunit/phpunit: ^7.5.20
- roave/security-advisories: dev-master
This package is auto-updated.
Last update: 2024-11-30 02:10:56 UTC
README
Библиотека умеет определять имя, отчество и пол пользовател по словарю в формате json/php, а также составлять обращение к нему на основе произвольной строки.
Быстрый старт
composer require kr-digital/names-detector
<?php $namesDetector = new \KRDigital\NamesDetector\NamesDetector(); $firstNameEntry = $namesDetector->extractFirstName('Иванов Иван Иванович'); // $entry->getValue() = 'Иван', $entry->getGender()->getValue() = 'm' $middleNameEntry = $namesDetector->extractMiddleName('Иванов Иван Иванович'); // $middleNameEntry->getValue() = 'Иванович', $middleNameEntry->getGender()->getValue() = 'm' $title = $namesDetector->createTitle('Мария Петровна Смирнова'); // $title = 'Уважаемая Мария Петровна'
Работа с кастомным словарем
Валидный формат словаря в формате JSON:
{ "first_names": [ [ "Андрей", "m" ], [ "Надежда", "f" ] ], "middle_names": [ [ "Александрович", "m" ], [ "Александровна", "f" ] ] }
В формате php:
<?php return [ 'first_names' => [ [ 'Андрей', 'm', ], [ 'Надежда', 'f', ], ], 'middle_names' => [ [ 'Александрович', 'm', ], [ 'Александровна', 'f', ], ], ];
Использование своего словаря:
<?php $customDictionaryPath = '/var/www/app/data/en_dictionary.json'; // поддерживаемые форматы: php, json $config = new \KRDigital\NamesDetector\Config\Config($customDictionaryPath); $namesDetector = new \KRDigital\NamesDetector\NamesDetector($config); // <...>
Кастомные обращения
<?php $namesDetector = new \KRDigital\NamesDetector\NamesDetector(); $prefix = new \KRDigital\NamesDetector\Entry\Prefix\Prefix('Дорогой', 'Дорогая'); $namesDetector->createTitle('Иванов Иван Иванович', $prefix); // 'Дорогой Иван Иванович'