1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| //Separation Nom Prénom pour un nom en majuscule et un prénom commençant par une majuscule
/* 1. Les noms, écrits entièrement en majuscules, partie : ((?:\b[[:upper:]'\s-]+\b)+)
\b : délimiteur de mots (représente un changement d'état entre un caractère qu'on ne trouve pas dans un mot : un signe de ponctuation, un blanc, ... et l'inverse : tout ce qui est une lettre par exemple).
[[:upper:]'\s-] : constitués de lettres majuscules ([:upper:]), d'apostrophes ('), d'espaces (\s) et de tirets (-)
Le premier + indique qu'un nom est constitué d'au moins l'un des caractères précédents
Le deuxième + dénote le fait que le nom peut être constitué de plusieurs mots en majuscules (au moins un).
2. Les prénoms, commençant par une lettre majuscule (on peut rendre ce critère facultatif en ajoutant un ? derrière le deuxième [[:upper:]]) puis entièrement en minuscules : ((?:\b[[:upper:]][[:lower:]'\s-]+\b)+)
Tout est strictement identique à la partie correspondant aux noms hormis le fait que [[:upper:]] dit que le prénom doit commencer par une majuscule et que [[:lower:]'\s-] fait en sorte que le restant du prénom soit
constitué de minuscules, d'apostrophes, de blancs ou de tirets.*/
function extraire_nom_prenom($string) {
// if (preg_match("/(?P<lastname>\b[\w\x20\x27\x2D]+\b)\x20+(?P<firstname>\b[[:upper:]][\w\x20\x2C\x2D]+\b)/", $string, $m)) {
if (preg_match("#((?:\b[[:upper:]'\s-]+\b)+)\s+((?:\b[[:upper:]]?[\x6A\x6B\x6C\x6D\x6E\x6F\x61\x62\x63\x64\x65\x66\x67\x68\x69\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x2D\x82\xE9\xE0\xE7\xE8\xEF'\s-]+\b)+)#", $string, $m)) {
$resultat= array("nom"=>$m[1],"prenom"=>$m[2]);
$resultat_liste=array($resultat);
return $resultat_liste;
}
return FALSE;
}
echo $resultat_infos['prenom'];
echo $resultat_infos['nom']; |
Partager