kr-digital/names-detector

从给定字符串中检测姓名和性别

2.1.0 2020-05-08 16:40 UTC

This package is auto-updated.

Last update: 2024-08-30 01:38:11 UTC


README

Code Coverage Scrutinizer Code Quality Build Status Packagist

该库能够根据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); // 'Дорогой Иван Иванович'