Remplacez les caractères diacritiques par ASCII "équivalent" en PHP?
Questions connexes:
- Comment remplacer des caractères dans une java String?
- Comment remplacer des caractères spéciaux avec leurs équivalents (comme le " á "pour " un") en C#?
Comme dans les questions ci-dessus, je suis à la recherche d'un système fiable, robuste, de manière à réduire tout caractère unicode à la quasi-équivalent ASCII à l'aide de PHP. Je veux vraiment éviter de rouler ma propre table.
Par exemple (volé à partir du 1er référencé question): Gračišće
devient Gracisce
source d'informationauteur Dolph
Vous devez vous connecter pour publier un commentaire.
La iconv module peut le faire, plus spécifiquement, la iconv() fonction:
Le principal soucis avec iconv est que vous avez juste à regarder vos encodages, mais c'est définitivement le bon outil pour le travail (j'ai utilisé "Windows-1252" pour l'exemple en raison des limitations de l'éditeur de texte que je travaillais avec 😉 La fonction de iconv que vous voulez absolument utiliser est le
//TRANSLIT
drapeau, lequel indique iconv pour translittérer les caractères qui n'ont pas un ASCII match dans l'approximation la plus proche.Ma solution est de créer deux chaînes, d'abord pas voulu lettres et la deuxième avec des lettres de remplacer des premières.
Essayez ceci:
Basée sur la réponse choisie dans ce fil: URL Friendly nom d'utilisateur en PHP?
J'ai trouvé une autre solution, basée sur @zombat de réponse.
De la question avec sa réponse a été que j'ai fait:
Et après la suppression de
//IGNORE
à partir de la fonction, j'ai eu:Donc, le
š
personnage a été correctement traduits, mais les autres personnages n'étaient pas.La solution qui a fonctionné pour moi est un mélange entre
preg_replace
(pour éliminer tout mais [a-zA-Z0-9] - y compris les espaces) et @zombat la solution:De sortie: