Je ne suis surtout pas doué pour comprendre ce système.
Voici mon code
<?php
$in = "abg123acb";
$pattern = array( '/a/','/b/');
$replacement = array( 'b', 'c');
$out = preg_replace($pattern , $replacement ,$in) ;
$patternr = array( '/b/','/c/');
$replacementr = array( 'a', 'b');
$reverse = preg_replace($patternr , $replacementr ,$out) ;
echo "in: ".$in."<br />";
echo "out: ".$out."<br />";
echo "reverse: ".$reverse."<br />";
?>
Mon but est de 'coder' le string in en simplement changeant une lettre par une autre.
in: abg123acb je m'attendais à bcg123bcc
out: ccg123ccc que j'obtiens
reverse: bbg123bbb je souhaite retrouver le string de départ.
Tout se passe comme si Regex reprenait son traitement en début de chaine après chaque transposition.
Première itération ( a->b : abg devient bbg
Deuxième itération ( b->c: bbg devient ccg
Est-ce le comportement standard de Regex ou y-a-t-il posibilité de maitriser cela?
Merci d'avance pour vos conseils
Modifié par megaten (25 Nov 2011 - 21:48)
Voici mon code
<?php
$in = "abg123acb";
$pattern = array( '/a/','/b/');
$replacement = array( 'b', 'c');
$out = preg_replace($pattern , $replacement ,$in) ;
$patternr = array( '/b/','/c/');
$replacementr = array( 'a', 'b');
$reverse = preg_replace($patternr , $replacementr ,$out) ;
echo "in: ".$in."<br />";
echo "out: ".$out."<br />";
echo "reverse: ".$reverse."<br />";
?>
Mon but est de 'coder' le string in en simplement changeant une lettre par une autre.
in: abg123acb je m'attendais à bcg123bcc
out: ccg123ccc que j'obtiens
reverse: bbg123bbb je souhaite retrouver le string de départ.
Tout se passe comme si Regex reprenait son traitement en début de chaine après chaque transposition.
Première itération ( a->b : abg devient bbg
Deuxième itération ( b->c: bbg devient ccg
Est-ce le comportement standard de Regex ou y-a-t-il posibilité de maitriser cela?
Merci d'avance pour vos conseils

Modifié par megaten (25 Nov 2011 - 21:48)