Maison > Questions et réponses > le corps du texte
J'essaie de remplacer une chaîne mais ça fonctionne comme une boucle
$especiais = ["b", "c", "k", "g", "j", "d", "f", "a", "e", "m", "i", "y", "h", "l", "p", "q", "n", "x", "o", "r", "z", "u", "v", "w", "s", "t"]; $certo = ["pn", "veh", "veh", "ged", "ged", "gal", "or", "un", "graph", "tal", "gon", "gon", "na", "ur", "mals", "ger", "drux", "pal", "med", "don", "ceph", "van", "van", "van", "fam", "gisg"]; $resultado = str_replace($especiais, $certo, $phrase);
Exemple de code renvoie : OL renvoie medvanandon
Le résultat exact dont j'ai besoin est OL revient MEDUR
J'ai besoin que chaque lettre soit remplacée exactement par la lettre correspondante, mais dans ce code, le remplacement est répété plusieurs fois.
P粉0215534602023-09-07 00:38:42
Il y a un avis dans la documentation str_replace()
PHP qui dit :
Je recommande plutôt d'utiliser strtr()
, qui permet de passer un tableau "de remplacement" au format (de => à), comme dans l'exemple suivant :
$replace = [ 'b' => 'pn', 'c' => 'veh', 'k' => 'veh', 'g' => 'ged', 'j' => 'ged', 'd' => 'gal', 'f' => 'or', 'a' => 'un', 'e' => 'graph', 'm' => 'tal', 'i' => 'gon', 'y' => 'gon', 'h' => 'na', 'l' => 'ur', 'p' => 'mals', 'q' => 'ger', 'n' => 'drux', 'x' => 'pal', 'o' => 'med', 'r' => 'don', 'z' => 'ceph', 'u' => 'van', 'v' => 'van', 'w' => 'van', 's' => 'fam', 't' => 'gisg', ]; $phrase = 'ol'; echo strtr($phrase, $replace);
Cela vous donnera le résultat que vous attendez, comme indiqué ci-dessous :
medur
Démo : https://tehplayground.com/5YSxPYZfreiPTz9K