Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1433 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  PHP : str_replace ne marche même pas

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

PHP : str_replace ne marche même pas

n°1924686
prussian_b​lue1889
Posté le 17-09-2009 à 02:57:37  profilanswer
 

Bonjour,
 
je m'arrahce les cheveux pour programmer une petite fonction de cryptage ultra simple qui consiste à remplacer la lettre a par b, b par c, etc.
 
Après avoir lu 50 000 fois la doc php sur la fonction str_replace j'en suis toujours là.
 
Si je tape n'importe quoi "diobzey" en mode "crypter" il me retroune "aaaaaa";
si je passe en mode décrypter il me retroune un truc à peu près correct, sauf pour la lettre b à laquelle il retourne "z" au lieu de "a" (manquait plus que ça, le serveur n'est pas logique !).
 
Je suis sur PHP 4.4 et d'après la doc il n'y a pas de bug sur cette version.
 
Voici le code :
(n'hésitez pas à faire executer le code sur une de vos machines si le code vous semble trop compliqué ^^)
 

Spoiler :

<?php  
 
$initial=array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z');
$final = array('b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'a');
 
if(isset($_POST['start']) && isset($_POST['saisie']))  
 
{  
if ($_POST['choix']=='crypt')  
 { echo str_replace($initial, $final, $_POST['saisie']); }
elseif ($_POST['choix']=='decrypt')  
 { echo str_replace($final, $initial, $_POST['saisie']); }
else
 { }
}
 
else
 
{ ?>
 
<form method="post" action="crypter.php">
 
<p>
<textarea name="saisie" cols="100" rows="15"></textarea>
</P>  
 
<P>
<input type="radio" name="choix" value="crypt" checked> CRYPTER
<input type="radio" name="choix" value="decrypt"> DECRYPTER
</p>
 
<P>
<input type="submit" value="Valider" name="start">
</p>
</form>
 
<?  
 
}
 
?>


Message édité par prussian_blue1889 le 17-09-2009 à 03:09:48
mood
Publicité
Posté le 17-09-2009 à 02:57:37  profilanswer
 

n°1924690
ravenX11
Coding is living
Posté le 17-09-2009 à 03:31:25  profilanswer
 

Poum poum poum,
ta solution:
 
http://fr2.php.net/manual/fr/function.strtr.php

n°1924713
rufo
Pas me confondre avec Lycos!
Posté le 17-09-2009 à 09:33:37  profilanswer
 

en même temps, il ne fait qu'un décalage de 1 sur la droite dans le code ascii  :/ C'est complètement nul comme "cryptage" (-> chiffrement).


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1924737
prussian_b​lue1889
Posté le 17-09-2009 à 10:20:57  profilanswer
 

étant donné mes besoins je n'ai pas besoin de "cryptage" plus compliqué , juste un décalage d'un ou deux rangs.
 
Visiblement j'ai vu que certains étaient dans le même cas que moi et ca rend fou qu'une fonction aussi simple ne puisse pas donner ce qu'on veut.
 
Sinon strtr ne marche pas non plus, et avec 3 arguments ne demande pas de tableaux.
 
pstr_replace est vraiment nul ! :fou: je vais finir par devenir fou


Message édité par prussian_blue1889 le 17-09-2009 à 10:37:59
n°1924747
PunkRod
Digital Mohawk
Posté le 17-09-2009 à 10:48:41  profilanswer
 

str_replace te fais un remplacement dans l'ordre des éléments du tableau :
 
si la lettre x devient -> y
elle passe après dans y-> z
et finalement z-> a
du coup t'as 'a' partout.
(cf. http://www.php.net/manual/fr/funct [...] .php#91536 )
 
'working as intended'
 
edit:
-> une implémentation vue sur le net
http://www.phpcs.com/codes/CHIFFRE-CESAR_41756.aspx
(que je n'ai pas testée :o)


Message édité par PunkRod le 17-09-2009 à 10:51:37
n°1924753
prussian_b​lue1889
Posté le 17-09-2009 à 11:02:19  profilanswer
 

Merci beaucoup pour ton aide, je ferai un code assez fastidieux mais simple avec strtr() vu que je n'ai pas trop le temps, mais le lien que t'as mis m'a bien aidé.
 
Et pourtant il n'a été écrit nulle part dans les docs php que si le tableau de départ et celui d'arrivée avaient des valeurs en commun, str_replace() remplacerait n'importe comment (dans mon cas ca retombe sur des "aaaaaaa" ).
 
De quoi faire perdre un temps fou à un codeur.

Message cité 1 fois
Message édité par prussian_blue1889 le 17-09-2009 à 11:05:29
n°1924792
macgawel
Posté le 17-09-2009 à 13:14:12  profilanswer
 

prussian_blue1889 a écrit :

Merci beaucoup pour ton aide, je ferai un code assez fastidieux mais simple avec strtr() vu que je n'ai pas trop le temps, mais le lien que t'as mis m'a bien aidé.
 
Et pourtant il n'a été écrit nulle part dans les docs php que si le tableau de départ et celui d'arrivée avaient des valeurs en commun, str_replace() remplacerait n'importe comment (dans mon cas ca retombe sur des "aaaaaaa" ).
 
De quoi faire perdre un temps fou à un codeur.


 [:sh@rdar]  :

Citation :

Si search  ou replace  sont des tableaux, les éléments sont traités du premier, au dernier.


str_replace ne remplace pas "n'importe comment", il agit comme prévu :
Tu donnes un tableau de recherche et un tableau de remplacement => il prend les éléments du tableau de recherche un par un, et il les remplace par le remplacement.
Sur une chaîne "ab", il prend le premier élément de $initial ('a'), il le trouve => il le remplace par le premier élément de $final ('b'). Résultat = 'bb'.
Il prend ensuite le deuxième élément de $initial ('b') et le remplace par 'c' => 'cc'.
etc.
A la fin, il remplace les 'z' par des 'a' => tu as bien 'aa'.
 
Tu peux faire ton code simplement (sans que ce soit fastidieux) avec strtr(), mais il faut faire attention aux caractères spéciaux !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  PHP : str_replace ne marche même pas

 

Sujets relatifs
[PHP/Excel] crée une nouvelle feuille EXCEL a partir de PHPRotation d'images au click/refresh avec du PHP
Script PHP RSSTransformer un PHP en XML
Problème de code PHP[RESOLU] Lors de l'éxecution un coup ca marche, un coup ca marche pas
Remplacer texte par image avec str_replace[Php/OpenLaszlo] conception de site/ transmission client/serveur
[PHP, JavaScript] Copier la valeur d'un input[PHP] Comparaison de chaine d'un fichier
Plus de sujets relatifs à : PHP : str_replace ne marche même pas


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR