Ich benutze diese PHP regexp um zu überprüfen, ob ein Feld einen Namen enthält, bestehend aus mindestens einem Vor-/Nachnamen, und dann optionale andere Vornamen oder Initialen.preg_match Vorname/Nachname übereinstimmende Gruppen
$success = preg_match("/([\x{00c0}-\x{01ff}a-zA-Z'-]){2,}(\s([\x{00c0}-\x{01ff}a-zA-Z'-]{1,})*)?\s([\x{00c0}-\x{01ff}a-zA-Z'-]{2,})/ui",$user['name'],$matches);
$output[($success ? 'hits' : 'misses')][] = ['id' => $user['id'],'email' => $user['email'],'name' => $user['name'],'matches' => $matches];
Scheint gut in Bezug auf Treffer/Fehlschläge, d. H. Wahr/falsch, ob es übereinstimmt oder nicht.
Aber dann die Vor- und Nachnamen mit Gruppen Ich versuche, die gleiche Sache zu verwenden, zu extrahieren, die ich bin zu kämpfen Recht zu bekommen ..
Holen Sie sich viele Ergebnisse wie:
"name": "Jonny Nott",
"matches": [
"Jonny Nott",
"y",
"",
"",
"Nott"
]
"name": "Name Here",
"matches": [
"Name Here",
"e",
"",
"",
"Here"
]
"matches": [
"Jonathan M Notty",
"n",
" M",
"M",
"Notty"
]
..aber was ich wirklich will, ist für eines der 'Übereinstimmungen' immer nur den Vornamen zu enthalten, und einen, der immer nur den Nachnamen enthält.
Irgendwelche Hinweise, was falsch ist?