Trier les clés accentuées d'un tableau associatif en PHP

Eléphant du PHP | 121 Messages

30 déc. 2007, 23:05

ksort() se moque de vous ? Voilà de quoi trier sans vergogne les clés accentuées de vos tableaux :
function wd_remove_accents($str, $charset='utf-8')
{
	$str = htmlentities($str, ENT_NOQUOTES, $charset);

	$str = preg_replace('#\&([A-za-z])(?:uml|circ|tilde|acute|grave|cedil|ring)\;#', '\1', $str);
	$str = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $str);
	$str = preg_replace('#\&[^;]+\;#', '', $str);
	
	return $str;
}

function wd_unaccent_compare($a, $b)
{
    return strcmp(wd_remove_accents($a), wd_remove_accents($b));
}

$ar = array
(
    'popé' => 4,
    'épinard' => 1,
    'carotte' => 5,
    'Marrons' => 6,
    'epsilon' => 1,
    'zéro' => 2,
    'popo' => 4,
    'Étourderie' => 2
);

uksort($ar, 'wd_unaccent_compare');

Code : Tout sélectionner

Array ( [Marrons] => 6 [Étourderie] => 2 [carotte] => 5 [épinard] => 1 [epsilon] => 1 [popé] => 4 [popo] => 8 [zéro] => 7 )
Pour une explication explicative : Trier les clés accentuées d'un tableau associatif.