Ik wil graag de voornaam en achternaam kunnen splitsen. Is het met PHP mogelijk om de hoofdletters als achternaam te herkennen, en de normale tekst als voornaam?
JANSEN Jan (voornaam Jan, achternaam Jansen)
PIETERSEN Piet (voornaam Piet, achternaam Pietersen)
DE HAAN Henk (voornaam Henk, achternaam De Haan)
Sla voorletters, voornaam (roepnaam), tussenvoegsel(s) en achternaam (en wellicht ook naam van de partner ingeval het een vrouw betreft) gewoon apart op, dan heb je dit probleem nooit. Er zijn altijd randgevallen waarbij een systeem de verkeerde keuzes maakt, beter is gewoon om je informatie ondubbelzinnig op te slaan.
Aan de andere kant, als ik in een formulier mijn naam moet opgeven, dan geef ik dat goed op.
Apart voorletters, voornaam, achternaam, meisjesnaam (heb ik niet) opgeven is echt vervelend.
Ik heb in de database de velden gesplitst, maar ik wil uitslagen toevoegen waarin deze vorm wordt gebruikt. In het geval dat iemand nog geen id heeft wil ik deze toevoegen, en daarom wil ik graag voornaam en achternaam kunnen onderscheiden.
Indien de achternaam volledig in uppercase is geschreven dan is dat wel mogelijk denk ik, maar als je je data al in verschillende vakjes hebt opgeslagen, ben je dan niet je eigen data aan het reverse-engineeren? Mogelijk zou je een soort van autocomplete dingetje kunnen maken met AJAX? Maar dan het volgende:
En als je een naam invoert zou dan bepaald moeten worden (aan de hand van deze naam) of deze al in je database zit? De naam is mogelijk niet uniek, mogelijk zelfs niet in combinatie met geboortedatum. Deze discussie (van het uniek zijn van persoonsgegevens) komt mij trouwens bekend voor. De kans is (heel?) klein, maar nog steeds aanwezig dat verschillende personen in jouw systeem op deze manier worden aangezien voor eenzelfde persoon.
Het komt een beetje over alsof je een makkelijke (luie?) oplossing zoekt voor iets, maar mogelijk introduceer je daarmee weer andere problemen. Ook geeft je nauwelijks een omschrijving van de setting waarin je dit principe wilt toepassen wat het haast onmogelijk maakt een inschatting te geven van de implicaties van (ontwerp)beslissingen.
De theoretische problemen ken ik wel, maar daar verwacht ik geen problemen mee.
Denk hier de stem van Darth Vader bij: Do not underestimate the ingenuity of (stupid) users.
G Jansma op 18/12/2015 16:52:30
Rest de vraag: Kan je een naam splitsen op basis van hoofdletters?
Natuurlijk kan dat, maar dat lijkt mij een oversimplificatie / nogal foutgevoelig.
Hier een recept wat doet wat jij wilt:
- explode een naam op een spatie
- controleer of een deel bestaat uit enkel hoofdletters (of andere karakters, zie Ivo zijn kanttekeningen), gebruik hiervoor bijvoorbeeld een regexp
- is dit het geval: dit deel is onderdeel van de achternaam, zo niet: dan niet
Dat recept werkt aardig goed. Ik ben al een heel stuk opgeschoten met wat ik wil, maar aangezien ik niet heel ervaren ben met PHP loop ik een beetje vast. Ik kan dus wel controleren of elk part uit hoofdletters bestaat, maar hoe kan ik dat vervolgens samenvoegen tot een voornaam en een achternaam?