Évitez de remplacer les chaînes à plusieurs reprises, remplacez-les une seule fois
P粉257342166
P粉257342166 2023-09-06 11:10:09
0
1
696

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粉257342166
P粉257342166

répondre à tous(1)
P粉021553460

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal