CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] Problème str_replace()

locraft44
locraft44
Niveau 4
04 juillet 2016 à 16:01:28

Bonjour tout le monde,
J'essaye de coder un bout de programme pour crypter des infos voila le programme :
<?php $key = "a"; $all = array("/",":","=","&",".","1","2","3","4","5","6","7","8","9","0","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","Y","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","y","y","z"); $replace = array("z","A","r","T","H","f","Z","e","3","h","k","K","g","R","c","G","a","Tz","Ya","6","1","Za","51","hzE","te3","yrR","33","ta","21","bt2","g2","2g","rt3","h3","aeh4","hg3","52","ze","235","rzr3","ze34","hj26","TEe3","je3","tzR","y4","a3","zt3","th4","eyuR","33","zer3","hhR","n","B","h4r","h4h","32d","ff3","qrg2","ZEa","R3","bf3","k44","lE","kE","k4a"); $code = str_replace($all,$replace,$key); echo $code; ?> Et le problème est que lorsque je rentre à (dans le $key), le programme me ressort "ZEah43326" alors qu'il devrait me donner "hg3".

J'ai aucune idée de la cause du problème, si quelqu'un peut m'aider :)
Merci d'avance !

Iryss
Iryss
Niveau 2
04 juillet 2016 à 18:36:50

Bonsoir,

Cela est dû au fait que la fonction str_replace() a la capacité de "boucler", pour parler simplement, le remplacement de caractère.

Pour être plus concret voyons cet exemple :

$1 = array('A', 'B', 'C');
$2 = array('B', 'C', 'D');
$key = 'A';
$resultat = str_replace($1, $2, $key);

echo $resultat;

Vous pourriez croire que $resultat va renvoyer B car on lui demande de remplacer les A par des B. Mais vous auriez tort car en réalité c'est un D que va renvoyer $resultat. Pourquoi ? Simplement parce que lorsque A deviendra B, la fonction "détectera" ce B et comme il est imposé de remplacer les B en C, ce sera un C et par le même raisonnement, le C deviendra un D.

Dans votre cas, la fonction remplace bien le a par hg3, cependant il y a trois nouveaux caractères qui se forme et qui peuvent être remplacer :"h", "g", "3". Et c'est ce qu'elle va faire jusqu'à ne plus trouver la possibilité de remplacer. D'où ce résultat assez surprenant que vous décrivez.

J'espère avoir été assez clair. Sinon n'hésitez pas à poser des questions.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment