2010-12-08 11 views
7

Je dois être en mesure de remplacer certains caractères étrangers courants par des équivalents anglais avant de stocker des valeurs dans mon db.Remplacer les caractères étrangers

Par exemple: æ remplacer par ae et ñ avec n.

Est-ce que j'utilise preg_replace?

Merci

+1

Ceci est connu sous le nom de [translittération] (http://en.wikipedia.org/wiki/Transliteration). – Gumbo

Répondre

4

Vous pouvez définir vos caractères convertable dans un tableau, et utiliser str_replace():

$conversions = array(
    "æ" => "ae", 
    "ñ" => "n", 
); 

$text = str_replace(array_keys($conversions), $conversions, $text); 
4

Vous pouvez iconv() avec ASCII//TRANSLIT:

$text = iconv("UTF-8", "ASCII//TRANSLIT", $text); 
+0

ne va pas travailler pour 'æ' à ae – ajreal

+0

@ajrael: Cela convertit 'æ' en 'ae', du moins c'est ce que j'ai fait quand je l'ai essayé tout à l'heure. http://ideone.com/tBewx - Pouvez-vous donner un exemple spécifique montrant comment cela ne fonctionne pas? –

+0

@Mark [Ne fonctionne pas] (http://ideone.com/TSOeG) avec 'ISO-8859-1 // TRANSLIT'. Édité à 'ASCII' comme dans votre exemple de travail. Merci pour votre commentaire! –

6

Pour caractère des accents

$str = strtr($str, 
    "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÑÒÓÔÕÖØÝßàáâãäåçèéêëìíîïñòóôõöøùúûüýÿ", 
    "AAAAAACEEEEIIIINOOOOOOYSaaaaaaceeeeiiiinoooooouuuuyy"); 

Pour double character des accents (comme Æ, æ)

$match = array('æ', 'Æ'); 
$replace = array('ae', 'AE'); 
$str = str_replace($replace, $replace, $str); 
+0

+1 pour le jeu de caractères (mais il me manque quelques caractères hongrois: 'ŐőŰű';) –

2

Excusez-moi deviner pourquoi la deuxième que vous faites, mais ..

Si cela est pour la correspondance de recherche: Le point de caractère set collation dans un MySQL (par exemple), est que vous pouvez rechercher "n" et toujours correspondre "ñ"

Si c'est à des fins d'affichage: Je vous recommande si vous devez le faire, vous le faites lorsque vous affichez le texte à un utilisateur. Vous ne pouvez jamais récupérer vos données d'origine autrement.

Questions connexes