str_replace je comprend plus! aidez moa!!!

str_replace je comprend plus! aidez moa!!! - PHP - Programmation

Marsh Posté le 24-10-2007 à 21:02:22    

bonjours,
je vais pas m'acharner sur ce bout de code qui marche pas, mais je voudrais savoir pourquoi je n'ai pas le résulata voulu
ça me rend fou.
 

$str     = 'abcdefghijklmnopqrstuvwxyz';
$order   = 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');
$replace = array('z', 'y', 'x', 'w', 'v', 'u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a');
$multi = str_replace($order, $replace, $str);
 
echo $multi;


 
ce qui rend:
 

abcdefghijklmmlkjihgfedcba


 au lieu de zyxwvutsrqponmlkjihgfedcba
 
 
merci de votre aide!
 
existe il une alternative?


---------------
http://www.free-tribes.org
Reply

Marsh Posté le 24-10-2007 à 21:02:22   

Reply

Marsh Posté le 24-10-2007 à 21:13:07    

http://fr.php.net/str_replace

Citation :

existe il une alternative?


$multi = preg_replace($order, $replace, $str);
avec  
$order= array('/a/', '/b/', '/c/',...


Message édité par Dan_A le 24-10-2007 à 21:20:29
Reply

Marsh Posté le 24-10-2007 à 21:33:21    

merci, g failli finir a l'asile,  
je vais essayer tt ça deminx!


---------------
http://www.free-tribes.org
Reply

Marsh Posté le 24-10-2007 à 21:47:08    

Bah, ça n'explique toujours pas pourquoi il obtient ce résultat. D'après un exemple de la doc :
 

// Outputs: apearpearle pear
$letters = array('a', 'p');
$fruit   = array('apple', 'pear');
$text    = 'a p';
$output  = str_replace($letters, $fruit, $text);


Cette fonction semble avoir été codée avec les pieds : elle fait une boucle du genre for (i = 0; i < strlen($text); i ++).
 
Du coup bonjour les effets de bords ultra prise de tête à débugguer : lorsque dans cet exemple la première occurence de a est remplacé par "apple", la chaine va devenir : "apple p" et le traitement va reprendre après le premier a. Du coup les 2 p vont être remplacés par "pear"  :sweat: .
 
P...n, j'imagine qu'incrémenter i de la différence entre le texte ajouté et celui remplacé aurait donné une fonction trop intuitive....
 
Celà dit, dans son cas toutes les chaines ont la même longueur, ça ne devrait pas poser problème.

Reply

Marsh Posté le 24-10-2007 à 21:49:34    

GostSn a écrit :

bonjours,
je vais pas m'acharner sur ce bout de code qui marche pas, mais je voudrais savoir pourquoi je n'ai pas le résulata voulu
ça me rend fou.
 

$str     = 'abcdefghijklmnopqrstuvwxyz';
$order   = 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');
$replace = array('z', 'y', 'x', 'w', 'v', 'u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a');
$multi = str_replace($order, $replace, $str);
 
echo $multi;


 
ce qui rend:
 

abcdefghijklmmlkjihgfedcba


 au lieu de zyxwvutsrqponmlkjihgfedcba
 
 
merci de votre aide!
 
existe il une alternative?


Une alternative ? Oui, la fonction strrev.


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 24-10-2007 à 21:56:27    

tpierron a écrit :

Bah, ça n'explique toujours pas pourquoi il obtient ce résultat. D'après un exemple de la doc :
 

// Outputs: apearpearle pear
$letters = array('a', 'p');
$fruit   = array('apple', 'pear');
$text    = 'a p';
$output  = str_replace($letters, $fruit, $text);


Cette fonction semble avoir été codée avec les pieds : elle fait une boucle du genre for (i = 0; i < strlen($text); i ++).
 
Du coup bonjour les effets de bords ultra prise de tête à débugguer : lorsque dans cet exemple la première occurence de a est remplacé par "apple", la chaine va devenir : "apple p" et le traitement va reprendre après le premier a. Du coup les 2 p vont être remplacés par "pear"  :sweat: .
 
P...n, j'imagine qu'incrémenter i de la différence entre le texte ajouté et celui remplacé aurait donné une fonction trop intuitive....
 
Celà dit, dans son cas toutes les chaines ont la même longueur, ça ne devrait pas poser problème.


 
donc, le pb vien de la fonction?
ce n'est pas moi qu'i n'ai rien compris?


---------------
http://www.free-tribes.org
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed