xom`s pinion - Tom Hnatovsky Blog

Rozdělení jména a příjmení v PHP

4. ledna 2015 PHP 1 komentář

Na základě článku Marka Prokopa o Lazy registration v e-shopu jsem se zamýšlel nad myšlenkou dělení celého jména na křestní jméno a příjmení.

Hledal jsem možné hotové PHP knihovny, které by si s tímto úkolem poradily, ale nic jsem nenašel, tak jsem si o Silvestru místo juchání napsal svou, o kterou se chci nyní podělit.

Základní idea

Knihovna pracuje s databází křestních jmen a má jednu metodu, která z jednoho stringu vrací pole obsahující oddělené jméno a příjmení.

Stažení a ukázkový kód

Knihovna je volně ke stažení na bitbucket.org/xomax/namesplitter

require 'NameSplitter.php'; $splitter = new NameSplitter; var_dump($splitter->splitName('Ta Duc Trunc')); // vypíše array(2) { ["firstName"]=> string(6) "Ta Duc" ["surname"]=> string(5) "Trunc" }

Jednoduché a nezávislé na frameworku, redakčním systému, použitelné všude.

Databáze jmen

Jako databázi křestních jmen jsem použil seznam z webu MVČR, který obsahuje téměř 600 tisíc záznamů, mezi kterými je i mnoho exotických jmen. Pro použití v Česku je to dostačující, při použití v zahraničním projektu bych doporučil se poohlédnout po jiné databázi.

Poznámka: Jména jsou v databázi velkými písmeny abych zachoval možnost jednoduché aktualizace přímo ze zdrojů MVČR, kde je takto mají vedeny.

Další vývoj

Budoucí verze by měla obsahovat podporu pro akademické tituly (další položka návratového pole).

Také si pohrávám s myšlenkou vracet pole hodnot namísto sloučeného stringu křestních jmen / příjmení.

Poslední věcí, která mě trápí jsou jména, která neobsahují jméno z databáze nebo všechna jména jsou v ní obsažena. První případ nyní vrací celé jméno jako příjmení a křestní jméno zůstává nevyplněno. Druhý případ je složitější - jak vybrat správné jméno, které má být příjmením? Nyní to funguje tak, že se vrací poslední jméno jako příjmení. Napadlo mě, že by šlo u křestních jmen držet jejich četnost a na základě porovnání četnosti se rozhodnout, co je pravděpodobnějším křestním jménem, ale to by prostě nefungovalo - dříve nebo později by došlo k omylu.

Znáte jiné řešení?

Pokud znáte nějakou jinou funkční knihovnu, podělte se. Dost pravděpodobně bude propracovanější.
Pokud na nic jiného nenarazím, budu pokračovat v údržbě NameSplitteru.

Vaše komentáře

GRavatar

Tomáš Hnatovský 10.10.18 18:36

Oživeno v Githubu: https://github.com/…ame-splitter

Přidejte i vy svůj komentář

Pole komentáře: zmenšit / zvětšit

Jméno:

Email: (Gravatar ID)

Web:

Barva trávy (otázka proti robotům):

© 2004-2012 Tom Hnatovsky - Všechna práva vyhrazena