Convertir ASCII et UTF-8 non-caractères spéciaux avec une fonction

Donc je suis en train de construire un site web qui utilise une base de données des aliments qui a été déjà mis en place et a été utilisé par le client pour l'ensemble de leurs autres sites pour assez un certain temps.

Ils remplissent cette base de données par le biais d'un programme externe, et je n'ai aucun moyen de changer la façon dont je récupérer mes données.

Maintenant j'ai le problème suivant, j'obtiens parfois des chaînes de caractères en UTF-8 et parfois en ASCII (j'espère que j'ai ces termes droite, ils sont encore un peu vague pour moi, parfois).

Afin que je puisse obtenir ceci: Scénic ou Scénic.

Maintenant, le problème est, je dois convertir cette non-caractères spéciaux (de sorte qu'il deviendrait Scenic) pour les url.

Je ne pense pas qu'il y a une fonction pour convertir é à e (si ce n'est de ne dire) donc je vais probablement avoir besoin de créer un tableau contenant toutes les sources et les destinations, mais le plus gros problème est la conversion de é à é sans casser é quand il s'agit par le biais de cette fonction.

Ou devrais-je créer un tableau contenant tout
(ainsi, par exemple: array('é'=>'e','é'=>'e'); etc.

Je sais comment obtenir é à é, en faisant utf8_encode(html_entity_decode('é')), toutefois mettre é par le biais de cette même fonction sera de retour é.

Peut-être que je suis à l'approche de ce mal, mais dans ce cas j'aimerais savoir comment je devrait approche.

html_entity_decode("éé",ENT_COMPAT,"UTF-8") fonctionne correctement pour moi - c'sorties "éé". Maby vous avez juste oublié de définir le codage? Cela devrait fonctionner sur UTF-8, et sur la première de 128 bits ASCII(texte brut), car ils ont les mêmes valeurs en UTF-8, il semble que c'est exactement votre cas.
Ah, ça résout une partie du problème 🙂
Ne iconv("UTF-8","ASCII//TRANSLIT","ééé") à résoudre la deuxième partie?
html_entity_decode('éeé',ENT_COMPAT,"UTF-8"); produit �eé pour moi (DOCTYPE html et meta charset UTF-8). Sur codepad.org il retourne éeé. Si je puis faire iconv("UTF-8","ASCII//TRANSLIT",$input); sur que je reçois une chaîne vide. Et iconv ne fonctionne pas sur codepad donc je ne peux pas le tester.
ideone.com/saxB7

OriginalL'auteur Kokos | 2011-09-23