Traitement nom peu courants

Petit nouveau ! | 1 Messages

03 oct. 2021, 21:03

Bonjour, lors de ma scolarité je dois filtrer des noms peu courant afin de valider les attentes du client.
J'ai un problème pour un des tests : 'éÉ'é-É'bé' (les apostrophes de début et de fin sont comprises).
Pour le nom cela doit être transformé en : 'EE'E-E'BE' et j'y arrive mais pour le prénom je dois obtenir : 'Eé'E-E'Bé' et c'est la que je bloque. J'arrive à obtenir : 'Eé'é-E'Bé' mais je n'arrive pas à changer le deuxième "è" en "E", pourtant la fonction détecte bien le "b" après l'apostrophe. Le soucis semble venir du fait que ce soir un "é". J'ai cherché et testé beaucoup de solution pour des problèmes similaires mais aucun n'avait ce soucis en particulier, ci quelqu'un a la réponse je l'accepte volontiers :D
Voici mon code de traitement :
function retirer_accents_prenom($prenom)
		{	
			echo "retirer_accents_prenom : $prenom<br><br>";
			$prenom = mb_convert_case($prenom, MB_CASE_TITLE, "UTF-8");
			$prenom = preg_replace_callback("#(^|['~-])(\w+)#", "myUcfirst", $prenom);

			$search  = array('À', 'Á', 'Â', 'Ã', 'Ä', 'Å', 'Æ', 'Ç', 'È', 'É', 'Ê', 'Ë', 'Ì', 'Í', 'Î', 'Ï', 'Ò', 'Ó', 'Ô', 'Õ', 'Ö', 'Ù', 'Ú', 'Û', 'Ü', 'Ý', 'æ');
			
			$replace = array('A', 'A', 'A', 'A', 'A', 'A', 'AE', 'C', 'E', 'E', 'E', 'E', 'I', 'I', 'I', 'I', 'O', 'O', 'O', 'O', 'O', 'U', 'U', 'U', 'U', 'Y', 'ae');

			$prenom = str_replace($search, $replace, $prenom);

			echo "$prenom <br>";
			//return $prenom; //On retourne le résultat
		}

	function myUcfirst($capture){
		echo "carac trouvé : $capture[2]<br>";
  		return $capture[1].mb_convert_case($capture[2], MB_CASE_UPPER_SIMPLE, 'UTF-8');
	}
Merci d'avance