Maison > Questions et réponses > le corps du texte
P粉0685109912023-08-18 11:34:44
Je souhaite partager une solution élégante qui évite d'utiliser des entités html et ne nécessite pas de lister manuellement tous les remplacements de caractères. Ceci est une traduction php de thispost.
function removeAccents($str) { return preg_replace('/[\x{0300}-\x{036f}]/u',"",normalizer_normalize($str,Normalizer::FORM_D)); } $a = "joaoaaeeA"; $b = "joãoâàéèÀ"; var_dump(removeAccents($a) === removeAccents($b));
Sortie :
bool(true)
P粉4706452222023-08-18 10:51:27
Convertissez simplement les symboles accentués en leurs homologues non accentués et comparez les chaînes. La fonction dans ma réponse supprimera les accents pour vous.
function removeAccents($string) { return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '', htmlentities($string, ENT_QUOTES, 'UTF-8'))), ' ')); } $a = "joaoaaeeA"; $b = "joãoâàéèÀ"; var_dump(removeAccents($a) === removeAccents($b));
Sortie :
bool(true)