Pb de guillemets en cascade...

Résolu
cyberappz Messages postés 13 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 19 juillet 2005 - 17 juil. 2005 à 20:43
cyberappz Messages postés 13 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 19 juillet 2005 - 19 juil. 2005 à 19:27
Bonjour,



j'ai un problème qui me fait tourner en rond depuis plusieurs jours.

J'ai un fichier qui écrit des instructions "str_replace" dans un autre fichier grâce à "fwrite"...

Mon problème se situe au niveau des guillemets qui se trouvent dans des
guillemets qui se trouvent dans des apostrophes etc. Et le problème se
situe plus précisément au niveau de ce que l'utilisateur entre comme
valeur parce que si les variables ne contenaient aucun caractère
spécial comme les guillemets ou autres, il n'y aurait aucun problème...
J'ai testé en mettant leur code html à la place mais en vain. Le gros
problème se situe dans les apostrophes de la fonction javascript popup,
il interprète le code comme la fin de sa variable. En clair:
popup('blablabla'blabla'); il croit que c'est 'blablabla' la
valeur fournie à la fonction...





Fichier qui écrit les requêtes "str_replace" (il écrit dans un fichier qui est include en fait):



.... (déclaration de la variable fp, etc. aucun prob jusque là) ... puis ...




<meta http-equiv= "Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Kate, the KDE Advanced Text Editor">

fwrite($fp, "<? \$ var = str_replace("$var1", "\\"$var2\\" onclick= \\" popup('nom de fichier contenant des apostrophes');\\">$var1", \$var); ?>\n");

PS:
Non, ce n'est pas une erreur (au cas où), j'ai bien voulu ne pas
interpréter la variable "var" contrairement aux autres. Le but étant
d'écrire un code dans un fichier qui sera inclut dans un autre (grâce à
include).





Fichier de résultat:




<meta http-equiv ="Content-Type" content= "text/html; charset=UTF-8">
<meta name="Generator" content="Kate, the KDE Advanced Text Editor">

<? $var = str_replace("nom de fichier avec des ' ... (se trouvant dans var1 donc)", ""lien cliquable contenant aussi des apostrophes" onclick= " popup('nom de fichier avec des apostrophes aussi');">var1", $var); ?>




Donc, il me faut obtenir comme résultat le contenu du fichier de
résultat ci-dessus mais avec la gestion des ' ou encore des " (le
problème se pose tant au niveau des guillemets que des apostrophes)
dans les variables envoyées par l'utilisateur depuis mon formulaire...





Svp, aidez-moi, j'éspère que quelqu'un sera éclairer ma lanterne car
j'ai pas arrêté de chercher non-stop....en vain... Comment faire si
même les codes html ne marche pas Je dois sûrement m'y prendre mal...





Un TRES TRES grand merci à celui qui sera m'aider...






:D - =[ Nicolas - http://redhatpower.free.fr ]=- 8)

16 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
18 juil. 2005 à 10:28
Oui ben ca :

$a = 'str_replace (...);';

ca ne va pas interpreter ton str_replace, et ca

fwrite ($fp, $a);

ca va bien ecrire ton str_replace dans ton fichier.
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 juil. 2005 à 21:00
Salut,



essaie ça :

fwrite($fp,'<?php $var = str_replace("'.$var1.'","Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
cyberappz Messages postés 13 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 19 juillet 2005
17 juil. 2005 à 21:18
Oua! Ca c'est de la réponse rapide ! Un grand merci de m'avoir répondu
tout d'abord. Malheureusement, "parse error, unexpected
T_CONSTANT_ENCAPSED_STRING" à cette ligne mais j'ai juste modifié un
truc qui a peut-être fait malgré que je ne pense pas (c'est ce qui est
en dessous mais avec ta version)...



En reprenant ma version, je te montre juste la différence qu'il me faudrait en plus.



Avant:

fwrite($fp, "<? $var =  str_replace("$var1",
"
onclick=\\"popup('nom de fichier contenant
des apostrophes');\\"
>$var1", \$var); ?>\n");



Après:

$param 
 
onclick\\"popup('nom de fichier contenant
des apostrophes');\\"  
(je ne mets pas de guillemets suppl&#233;mentaires ni ; lol c d&#233;j&#224; assez
complexe comme ca c pour toi voir le principe que j'aimerais).


fwrite($fp, "<? $var =  str_replace("$var1",
"$var1", \$var); ?>\n");






Car cette variable (param) n'affiche le paramètre OnClick que sous certaines conditions (ca ya no soucis).

J'éspère que trouveras. En attente de ta réponse, je vais vite manger et je reviens.




:D -=[ Nicolas - http://redhatpower.free.fr ] =- 8)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 juil. 2005 à 21:21
Heu...



tu voudrais pas poster un exemple de ce que ça doit donner sans le code
php, en html, et ensuite mettre les variables qui seront modifiées,
etc... (le code php quoi)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cyberappz Messages postés 13 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 19 juillet 2005
17 juil. 2005 à 21:35
Ben le reste ca a pour la plupart rien à voir, c'est vraiment juste un
problème dans la syntaxe avec les guillemets c'est le seul truc quoi...

Le reste c'est juste quelques champs, un bouton submit, et à chaque
fois qu'il recoit les valeurs var1 etc. ben il l'écrit dans le
fichier...



Le but c'est d'écrire du code php dans un fichier (donc faut l'écrire
sans qu'il soit interprété) et transformer une phrase du genre "il fait
beau"

en lien cliquable (adresse du lien fourni par le formulaire) + le
paramètre onclick qui, au lieu, d'être mis dans la balise, est remplacé
par une variable (param)

et suffit de déclarer $param= "onclick=blabla"; dans un cas,
sinon variable vide (ce qui donne juste un a href sans onclick). C'est
assez simple en fait, d'ailleurs j'ai tout bon sauf dans la syntaxe, ce
qui fait que les variables ne peuvent PAS contenir de guillemets ou
apostrophes.



Voilà, @++ et merci encore.


:D -=[ Nicolas - http://redhatpower.free.fr ] =- 8)
0
cyberappz Messages postés 13 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 19 juillet 2005
17 juil. 2005 à 21:36
Je vais manger et j'arrive juste après. +



:D -[ Nicolas - http://redhatpower.free.fr ]- 8)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 juil. 2005 à 21:44
Hello,



moi ce que je fais quand je mélange plusieurs fonctions prenant une
chaine, voire avec du javascript, c'est que je crée d'abord la chaine,

normale, en php, puis je la transfère a mes fonctions. ca marche bien et ca évite de se prendre la tete avec les échappements.
0
cyberappz Messages postés 13 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 19 juillet 2005
17 juil. 2005 à 22:08
Comment ca? Donc au lieu d'appeller tes variables tu appelles ta fonction ($variable); ?


Comment ferais-tu pour ceci qui est quand même assez complexe?


if(condition) {


    $param =  
onclick=\\"popup('nom de fichier contenant
des apostrophes');\\"     (je ne remets pas de guillemets pour ne pas embrouiller plus la chose)


}



fwrite($fp, "<? $var = str_replace("$var1",
"$var1", \$var); ?>\n");





Comme ca, si la condition n'est pas remplie, la partie onclick n'est pas affich&#233;e. 

Je
cherche &#224; faire ca comme ca mais en version correct sans 1000
backslashes et avec des variables POUVANT contenir des ' ou des ".





Merci.




:D - =[ Nicolas - http://redhatpower.free.fr ]=- 8)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
17 juil. 2005 à 22:20
il manque des guillements sur le pourtour de ta variable

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
cyberappz Messages postés 13 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 19 juillet 2005
17 juil. 2005 à 22:31
Je sais g bien précisé :



(je ne remets pas de guillemets pour ne pas embrouiller plus la chose)





Dans mon code, je les ai mis mais ici
j'ai voulu faire comprendre ce que je voulais faire sans justement
embrouiller le truc vu que le prob c'est les fameux " et '.

Tu n'as pas une idée alors?



ton :

fwrite($fp,'<?php $var str_replace( "'. $var1.'<gras>",""'.$var2.'" onclick</gras>"popup(\'nom de fichier contenant des apostrophes\');">'.$var1.'",'.$var.'); ?>'."\n");


semblait déjà beaucoup mieux...



Une autre idée? Ca doit bien être faisable quand même lol. Je galère depuis des jours et c'est pas la joie quoi pfff.



Au passage, les autres n'hésitez pas à donner vos idées au passage...









:D -[ Nicolas - http://redhatpower.free.fr ]- 8)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 juil. 2005 à 22:34
Je ne saisis pas son problème moi en fait.



$param = 'onclick="popup (\'adresse\', ...)"';

$var2 = 'adresse 2';

$ahref = 'a href="'.$var2.'"... >';

$var = str_replace ($var1, $ahref...)';



enfin t'as compris le principe, si tu t'en sors pas avec tes apostrophes et guillemets.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 juil. 2005 à 22:36
Non le problème c'est que tu veux mettre 36000 trucs au même
endroit...pourquoi faire un str_replace DANS un fwrite, str_replace
contenant

du html contenant du javascript...c'est tordu. Décompose!
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
17 juil. 2005 à 22:38
bref

$a = 'str_replace (...);';

$b = fwrite ($fp, $a);

etc...
0
cyberappz Messages postés 13 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 19 juillet 2005
17 juil. 2005 à 22:38
Merci de vos réponses. Il est vrai qu'il faudrait décomposé pas con du tout.

Je vais faire plein de tests et je publie le résultat dès que j'y
arrive. Je reste sur le forum si une autre idée vous venait à l'esprit.
:D -[ Nicolas - http://redhatpower.free.fr ]- 8)
0
cyberappz Messages postés 13 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 19 juillet 2005
17 juil. 2005 à 22:50
D'oh ! Je réfléchis à ca... On ne peut pas décomposer...

Pcq si j'écris du str_replace dans du fwrite, c'est pcq mon but c'est d'écrire des commandes php dans un fichier...

donc je dois écrire la commande str_replace dans le fichier...



En tout résumé:



- j'ai un fichier "liste.php" contenant une liste de phrase

--------> Dans ce fichier, j'inclus un fichier qu'on appellera "remplacement.php" contenant les commandes str_replace.



Mon but, c'est, à travers un formulaire d'administration, pouvoir
écrire dans le fichier "remplacement.php" les règles de remplacement.

A chaque validation du formulaire, je désire qu'une seule ligne de remplacement soit écrit...

Ca écrit donc à chaque ligne: <? str_replace
("le_mot", "le_mot AVEC LIEN et (sous condition avec OnClick (condition
déjà faite))", $var); ?>



Donc la commande str_replace dans fwrite ne doit pas être interprété
(pour ca que je backslash les $) mais juste vu comme une simple phrase
écrite dans un fichier.

C'est liste.php qui se chargera de lire sa liste et de lire tout les str_replace qui se situent dans "remplacement.php".



J'éspère que j'ai pu mieux vous éclairer. Je me comprends mieux moi-même c'est pour dire lol.







:D -[ Nicolas - http://redhatpower.free.fr ]- 8)
0
cyberappz Messages postés 13 Date d'inscription samedi 12 juillet 2003 Statut Membre Dernière intervention 19 juillet 2005
19 juil. 2005 à 19:27
Merci ca a marché nickel avec ta technique malalam :D

Merci à tous. @+ :-)
:D -[ Nicolas - http://redhatpower.free.fr ]- 8)
0
Rejoignez-nous