|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2006 Messages : 15 ![]() |
Bonjour à tous,
J'ai besoin pour un script php qui fait du remplacement de donnée dans un fichier de mentionner <? et ?> Hors, à l'exécution ces balises sont interprétées. Quelque a t-il eu idée ? Merci par avance |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
désactive short_open_tags dans le php.ini (recommandé)
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : mai 2006 Messages : 15 ![]() |
Merci pour cette réponse mais si je fais ça, les autres balises du script, dont je souhaite qu'elles soient interprétées, risquent de ne plus l'être.
Pour être plus précis, je souhaite transmettre, par un script A, une chaine du genre <? traduit($word);?> à un str_replace pour qu'il remplace cette chaine par sa valeur dans un fichier. Lorsque je lance mon script A, <? traduit($word);?> est interprété avant même d'être transmis à str_replace. C'est donc mon problème |
|
|
00
|
|
|
#4 |
![]() ![]() Inscription : septembre 2005 Messages : 1 741 ![]() |
Encode tes caractère speciaux avec htmlentities() et décode les apres si besoin avec html_entity_decode()
|
|
|
00
|
|
|
#5 |
|
Membre émérite
![]() Inscription : avril 2005 Messages : 988 ![]() |
Tu peux aussi utiliser la balise <code>
Ou encore & l t ; ? et ? & g t ; (sans espaces)
__________________
|
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : mai 2006 Messages : 15 ![]() |
J'ai essayé avec & l t ; ? (sans les espace) mais cela à pour effet que ne soit pas trouvé <? dans le fichier, car dans ce cas str_replace recherche respectueusement cette chaine de caractère.
J'ai aussi essayé "<"."?" et '<'.'?' mais là aussi, le code est interprété. Quant à la balise <code> elle ne règle rien non plus. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
a mon avis le probleme est mal formulé.
repose clairement le probleme avec des exemples (genre ce que tu as AVANT et ce que tu souhaiterais avoir APRES) et eventuellement des *morceaux* pertinents de code entourés amoureusement de balises CODE (symbole # dans l'éditeur)
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#8 | ||
|
Invité régulier
![]() Inscription : mai 2006 Messages : 15 ![]() |
Ok, je reprends en plus clair
Dans un fichier (monfichier.txt) j'ai le texte suivant : <?1258?> <?1875?> Dans un script php, je charge monfichier.txt puis souhaite procéder au remplacement de <?1258?> par MOT1 et <?1875?> par MOT2 Pour ce faire je fais : Code :
|
||
|
|
00
|
|
|
#9 | ||
|
Membre émérite
![]() Inscription : avril 2005 Messages : 988 ![]() |
Et avec ?
Code :
__________________
|
||
|
|
00
|
|
|
#10 | |||
|
Expert Confirmé
![]() ![]() Inscription : avril 2003 Messages : 3 286 ![]() |
Citation:
Calahaan, qu'est-ce qui te fait dire que ces balises sont "interprétées" ? Peux-tu préciser exactement le dysfonctionnement ? Si il y avait interprétation d'une balise de fin, il y aurait probablement une erreur générée.
__________________
Tous mes tutoriels Pas de questions techniques par MP ni par e-mail, merci ! Prolog rules! |
|||
|
|
00
|
|
|
#11 | ||
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
Code :
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
||
|
|
00
|
|
|
#12 | ||
|
Invité régulier
![]() Inscription : mai 2006 Messages : 15 ![]() |
Merci pour votre aide.
J'ai fais une monumentale erreur, et en simplifiant mon code au maxi j'en suis arrivé au constat suivant : Code :
la présence de <? n'y est donc pour rien et il semble qu'en réalité ce soit la présence d'un $ qui soit problématique J'ai essayé avec " mais c'est pareil |
||
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
.................................
Bon que dirais tu d'avoir un peu plus de methode... parce que là ca part n'importe ou. SOIT tu veux remplacer <? qqchose ?> SOIT tu veux remplacer ... $qqchose... SOIT les deux merci de bien cerner le probleme et de pas se perdre. L'idée de SIMPLIFIER le probleme pour l'isoler est toujours une bonne idée. alors deja, on vire le ereg_replace et on remet le str_replace...
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
|
|
#14 | ||
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Si tu veux utiliser le caractère $ dans une regex il faut que tu l'échappes car c'est un caractère spécial.
Code :
|
||
|
|
00
|
|
|
#15 | ||
|
Invité régulier
![]() Inscription : mai 2006 Messages : 15 ![]() |
Merci Djakisback pour ta remarque. J'ai échappé le dollard et depuis la chaine est bien remplacée.
Pour traiter des chaiens comportant des <? et ?> je m'en suis sorti ainsi : Code :
Merci à tous !!! |
||
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Inscription : février 2005 Messages : 1 791 ![]() |
Pour infos, le ? c'est le même souci que le dollar, c'est un caractère spécial donc faut l'échapper.
Code :
$bufferOUT = ereg_replace('<\? echo \$l;\?>', 'titi', $BufferIN); A+ |
|
|
00
|
|
|
#17 |
|
Membre Expert
![]() ![]() Inscription : janvier 2004 Messages : 1 238 ![]() |
le mieux reste d'utiliser http://fr2.php.net/Fr/preg_quote qui fait tout ca automatiquement.
comme ca au passage tu passe par preg_replace qui est mieux que ereg_replace ;o)
__________________
PHP : Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production) Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error()); Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable. Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com