regex qui transforme $ en \\\$ : comment faire ?

regex qui transforme $ en \\\$ : comment faire ? - PHP - Programmation

Marsh Posté le 30-08-2002 à 21:12:15    

Salut, je souhaiterai transformer les caracteres $ qui pourraient etre contenus dans une variable en \\\$.
J'ai bien essayé pas mal de trucs avec str_replace, preg_replace etc ... mais rien n'y fait !
 
Le but de cette transformation est d'écrire par la suite le contenu de cette variable dans un fichier php qui sera utilisé par la suite comme un fichier a part entiere (d'ou la necessite d'avoir \\\$ et non pas \$ pour l'ecriture).
 
Je ne sais pas si c'est possible de le faire ?
Le contenu de la variable initiale qui doit passer à la regex provient d'une zone textarea.
 
Si qqun a une idée quant à mon probleme, je suis preneur !
 :jap:

Reply

Marsh Posté le 30-08-2002 à 21:12:15   

Reply

Marsh Posté le 30-08-2002 à 21:23:51    

le \ étant un caractère d'échappement, un str_replace('$', '\\$', ...) va normalement remplacer $ par \$.
 
donc str_replace('$', '\\\\\\$', ...) devrait marcher.
 
ta méthode me semble douteuse.

Reply

Marsh Posté le 30-08-2002 à 21:25:52    

oui a y reflechir, je pense que je ferai mieux de passer par du javascript à la validation du formulaire pour placer les caracteres d'échappement ... mais bon, dans ce cas la, je suis un peu paumé vu que le javascript et moi, on est pas tres amis :D

Reply

Marsh Posté le 30-08-2002 à 21:29:34    

oui, et ? :D
 
je comprends tj pas ce que tu veux faire ...

Reply

Marsh Posté le 30-08-2002 à 21:35:43    

ben un exemple simple.
Le logo statique xiti de ce forum.
 
Un utilisateur arrive, il entre une donnee de ce type dans un champ textarea.
 
Soit :

<script language="JavaScript1.1"  type="text/javascript">
 <!--
 hsh = new Date();
 hsd = document;
 hsi = '<a href="http://www.xiti.com/xiti.asp?s=28067" ';
 hsi += ' TARGET="_top"><img width="39" height="25" border="0" align="bottom" src="http://logv5.xiti.com/hit.xiti?s=28067';
 hsi += '&p=&hl=' + hsh.getHours() + 'x' + hsh.getMinutes() + 'x' + hsh.getSeconds();
 if(parseFloat(navigator.appVersion)>=4)
 {s=screen;hsi += '&r=' + s.width + 'x' + s.height + 'x' + s.pixelDepth + 'x' + s.colorDepth;}
 hsd.writeln(hsi + '&ref=' + hsd.referrer.replace('&', '$') + '" alt="Mesurez votre audience"><\/a>');
 //-->
 </script>
 <noscript><a href="http://www.xiti.com/xiti.asp?s=28067" target="_top"><img width="39" height="25" border="0" align="bottom" src="http://logv5.xiti.com/hit.xiti?s=28067&p=" alt="Mesurez votre audience" /></a></noscript>


 
Moi, je dois obtenir un fichier .php à la fin (qui est ecrit par un script) qui contient différentes variables utilisée dans mon application.
 
Dans le fichier une fois ecrit, il me faudrait cette variable :
 

$xiti = "<script language=\"JavaScript1.1\"  type=\"text/javascript\">
 <!--
 hsh = new Date();
 hsd = document;
 hsi = '<a href=\"http://www.xiti.com/xiti.asp?s=28067\" ';
 hsi += ' TARGET=\"_top\"><img width=\"39\" height=\"25\" border=\"0\" align="bottom\" src=\"http://logv5.xiti.com/hit.xiti?s=28067';
 hsi += '&p=&hl=' + hsh.getHours() + 'x' + hsh.getMinutes() + 'x' + hsh.getSeconds();
 if(parseFloat(navigator.appVersion)>=4)
 {s=screen;hsi += '&r=' + s.width + 'x' + s.height + 'x' + s.pixelDepth + 'x' + s.colorDepth;}
 hsd.writeln(hsi + '&ref=' + hsd.referrer.replace('&', '[#ff0000]\$[/#ff0000]') + '\" alt=\"Mesurez votre audience\"><\/a>');
 //-->
 </script>
 <noscript><a href=\"http://www.xiti.com/xiti.asp?s=28067\" target=\"_top\"><img width=\"39\" height=\"25\" border=\"0\" align=\"bottom\" src=\"http://logv5.xiti.com/hit.xiti?s=28067&p=\" alt=\"Mesurez votre audience\" /></a></noscript>";


 
Donc en gros le preg pour que les " devienne des \\\" pour enfin etre ecrits correctement dans le fichier (sous la forme qui est \" ) par la suite, ya pas de probleme.
 
En revanche, celui pour avoir \$ au final (mis en rouge), la ya pas moyen ;(


Message édité par JBs le 30-08-2002 à 21:36:32
Reply

Marsh Posté le 30-08-2002 à 21:40:11    

je suis tj pas sûr de suivre ... php interprète le $ lorsqu'il n'est pas suivi par un nom ?  
 
dans ce cas, tu passes par les singles quotes ' ... ' qui n'interprètent pas les variables.
$test = 4;
echo "$test"; // affiche 4
echo '$test'; // affiche $test
 
je pense que ce serait mieux de stocker ce qu'entre l'utilisateur dans un fichier texte ou dans une table sql.

Reply

Marsh Posté le 30-08-2002 à 21:43:43    

ben ca doit etre fait en fait ca fonctionen comme ca :
L'iutilisateur entre un truc dans le textarea, il valide, la donnée est formattée pour etre ecrite dans le fichier texte, entréee en base de donnée puis le fichier est ecrit par la suite à partir des données qui sont en base de données.
 
si tu veux pour ecrire le fichier, il faut passer par :
\$var1 = "blabla";
\$var2 = "$xiti";
 
etc ..
 
($xiti provenant de la base de donnée bien entendu et devant etre formattée popur que la chaine soit ecrite correctement dans le fichier.)

Reply

Marsh Posté le 30-08-2002 à 21:51:54    

tu utilise quoi pour transformer ? si tu fais la transfo \$ avec preg, $ est un caractère spécial, donc je vois pas trop comment ça peut finir ... t'as essayé avec str_replace et le doublement des \ ?

Reply

Marsh Posté le 30-08-2002 à 21:56:05    

oui, pareil ;(
Rien a faire, il prend en compte le $ de remplacement comme un second caractere et repasser toujours un second coup de str_replace (comme pour le preg) dessus ....
Si bin que j'obtiens des trucs du genre $var$
 
Enfin rien de bon quoi.

Reply

Marsh Posté le 30-08-2002 à 22:08:17    

je viens de tester avec ton code xiti, une variable $t passée par post :
 
$t = str_replace('"', '\\\\\\"', $t);
$t = str_replace('$', '\\\\\\$', $t);
 
et j'obtiens bien des \\\" et \\\$ ... :??:

Reply

Marsh Posté le 30-08-2002 à 22:08:17   

Reply

Marsh Posté le 30-08-2002 à 22:31:49    

je v retester ..

Reply

Marsh Posté le 30-08-2002 à 22:41:40    

Rien a dire ca roule impec !
 
J'utilisais $t = str_replace("$", "\\\\\\$", $t);
c ca qui faisait tout planter ...
 
Quand tu m'as dit de passer en simgle quote, je l'ai fait que dans le module d'ecriture du fichier :D
 
dsl de t'avoir fait perdu plus ton tps !
 
En tout cas youdontcare merci 100000 fois !
Je te fais pas http://www.smilies.org/basesmilies/tibisou.gif mais le coeur y est !

Reply

Marsh Posté le 30-08-2002 à 22:44:12    

:hello:

Reply

Sujets relatifs:

Leave a Replay

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