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

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°205950
JBs
Posté le 30-08-2002 à 21:12:15  profilanswer
 

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:

mood
Publicité
Posté le 30-08-2002 à 21:12:15  profilanswer
 

n°205954
youdontcar​e
Posté le 30-08-2002 à 21:23:51  profilanswer
 

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.

n°205958
JBs
Posté le 30-08-2002 à 21:25:52  profilanswer
 

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

n°205960
youdontcar​e
Posté le 30-08-2002 à 21:29:34  profilanswer
 

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

n°205961
JBs
Posté le 30-08-2002 à 21:35:43  profilanswer
 

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
n°205967
youdontcar​e
Posté le 30-08-2002 à 21:40:11  profilanswer
 

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.

n°205968
JBs
Posté le 30-08-2002 à 21:43:43  profilanswer
 

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.)

n°205970
youdontcar​e
Posté le 30-08-2002 à 21:51:54  profilanswer
 

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 \ ?

n°205973
JBs
Posté le 30-08-2002 à 21:56:05  profilanswer
 

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.

n°205977
youdontcar​e
Posté le 30-08-2002 à 22:08:17  profilanswer
 

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 \\\$ ... :??:

mood
Publicité
Posté le 30-08-2002 à 22:08:17  profilanswer
 

n°205991
JBs
Posté le 30-08-2002 à 22:31:49  profilanswer
 

je v retester ..

n°206002
JBs
Posté le 30-08-2002 à 22:41:40  profilanswer
 

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 !

n°206004
youdontcar​e
Posté le 30-08-2002 à 22:44:12  profilanswer
 

:hello:


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

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

 

Sujets relatifs
Regex et smilies...[java] regex
[JavaScript] Une belle regex bien compliquée ...boolay en regex .... help needed
[VB] Ca existe une fonction qui transforme un hexa en binaire ?[PHP] regex
[PHP] transformé les \n en <br>regex besoin d'aide :-(
[URGENT] [C++] .cpp transformé en binaire ...[php] regex
Plus de sujets relatifs à : regex qui transforme $ en \\\$ : comment faire ?


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