tamtamchik/namecase

此软件包允许您在可能的情况下将名称转换为正确的格式。

3.1.0-beta.1 2024-08-06 15:20 UTC

README

Latest Version on Packagist PHP Total Downloads Software License Build Status Coverage Status Quality Score

SensioLabsInsight

名字和姓氏通常全部大写或全部小写存储。此软件包允许您在可能的情况下将名称转换为正确的格式。尽管名字和姓氏通常单独存储,如果它们出现在一个字符串中,则NameCase可以正确处理它们。

目前,NameCase可以正确处理包含以下任何内容的名称

Mc, Mac, al, el, ap, bat, ben, bin, binti, binte, da, de, das, dos, delle, della, di, du, del, der, den, ten, ter, la, le, lo, van and von.

它可以正确处理包含撇号和连字符的名称。

注意

此README.md是针对3.x版本的。
如果您需要PHP 5兼容版本,请使用1.0.x! README.md

安装

通过Composer

$ composer require tamtamchik/namecase

使用

use \Tamtamchik\NameCase\Formatter;
use function \Tamtamchik\NameCase\str_name_case;

// As a static call
Formatter::nameCase("KEITH");                            // => Keith
Formatter::nameCase("LEIGH-WILLIAMS");                   // => Leigh-Williams
Formatter::nameCase("MCCARTHY");                         // => McCarthy
Formatter::nameCase("O'CALLAGHAN");                      // => O'Callaghan
Formatter::nameCase("ST. JOHN");                         // => St. John
Formatter::nameCase("VON STREIT");                       // => von Streit
Formatter::nameCase("AP LLWYD DAFYDD");                  // => ap Llwyd Dafydd
Formatter::nameCase("HENRY VIII");                       // => Henry VIII
Formatter::nameCase("VAN DYKE");                         // => van Dyke

// Or as an instance
$formatter = new Formatter();
$formatter->nameCase("LOUIS XIV");                       // => Louis XIV

// Or as a function
str_name_case("JJ ABRAMS");                              // => JJ Abrams

// Passing options (see below for details)
Formatter::setOptions([
  'lazy'        => true,
  'irish'       => true,
  'spanish'     => false,
  'roman'       => true,
  'hebrew'      => true,
  'postnominal' => true,
]);

// Or
$formatter = new Formatter(['spanish' => true]);

// Or 
$formatter->setOptions([
    'lazy' = false, 
    'postnominal' => false
]);

// Or even
Formatter::nameCase("VAN DYKE", ['lazy' = false]);

// And for function
str_name_case("VAN DYKE", ['lazy' = false]);

选项

  • lazy – 默认:true. 如果字符串已经是混合大小写且lazy选项为true,则不执行任何操作。
  • irish – 默认:true. 正确处理“Mac”异常。
  • spanish – 默认:false. 正确处理el, la和西班牙语连词。
  • roman – 默认:true. 正确处理罗马数字。
  • hebrew – 默认:true. 正确处理ben, bat
  • postnominal – 默认:true. 正确处理后缀,例如PhD

排除后缀

<?php

use Tamtamchik\NameCase\Formatter;

Formatter::excludePostNominals('MOst');

Formatter::nameCase('ČERNÝ MOST');

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

测试与演示

$ composer tests
$ composer demo

贡献

有关详细信息,请参阅CONTRIBUTINGCODE_OF_CONDUCT

安全性

如果您发现任何与安全性相关的问题,请通过电子邮件yuri.tam.tkachenko@gmail.com联系,而不是使用问题跟踪器。

致谢

此库是基于Perl库移植的,其主要功能归功于Mark Summerfield的Perl版本。
我还使用了一些来自Ruby版本(由Aaron Patterson编写)的解决方案。
PHP端口中的任何错误都是我的责任。

鸣谢

原始PERL Lingua::EN::NameCase版本

  • 版权© Mark Summerfield 1998-2014。保留所有权利。
  • 版权© Barbie 2014-2019。保留所有权利。

Ruby版本

  • 版权© Aaron Patterson 2006。保留所有权利。

PHP版本

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件

Buy Me A Coffee