échapper les guillemets simples, erreur

fraid Messages postés 43 Statut Membre -  
Devilish Messages postés 1431 Statut Membre -
Bonjour,
je dois créer un fichier php a partir d'une page php,
le fichier ressemble à cela :

<?
$contenu_de_la_page='.......';
?>

mon problème est que je n'arrive pas à échapper les guillemets simples !

$lignes_[$oo] représente une ligne du fichier à recopier ($lignes_[] est un tableau obtenue avec file())

voici ma ligne qui est censée échapper les guillemets simples :
$tex=str_replace("'", "\'", $lignes_[$oo]);

mais ca ne marche pas, pourtant dans une page test la meme ligne de code fonctionne correctement ! d'où peut venir l'erreur ??

merci d'avance

15 réponses

gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
Salut,

Tu devrais ouvrir un bon bouquin de php :o)

addslashes() devrait t'être bien utile ....
0
fraid Messages postés 43 Statut Membre 5
 
sauf erreur de ma part addslashes ajoute des backslashes aux guillemets simples ET doubles, et je voudrais échapper uniquement les guillemets simples !
0
gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
Exact.
Mais regardes les commentaires utilisateurs... tu va trouver ton bonheur :o)
0
Devilish Messages postés 1431 Statut Membre 38
 
Un string replace pourrait marcher ici?

str_replace ( "\'", "\\'", tachaine)


(Je me suis peut être trompé d'un backslash)
0
gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
;o)
Sympa de lui proposer la solution qu'il utilise ! :o)
0

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

Posez votre question
Devilish Messages postés 1431 Statut Membre 38
 
Non y a un backslash en plus^^.
0
Devilish Messages postés 1431 Statut Membre 38
 
str_replace ( "\'", "&apos;", tachaine)


En fait c'est ce que je voulais dire tout à l'heure me suis gouré en faisant un copier/coller (j'utilise des moufles pour taper).
0
gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
Pas mieux... arrêtes les frais ici... :o)

Fais le test, et vérifies par toi même...

<?php

$t = "Tu as recopié sa solution, en y ajoutant des erreurs ;o) c'est moche... c'est de l'anti-aide :-D";
$t1 = str_replace ( "\'", "\\'", $t);
$t2 = str_replace ( "'", "\'", $t);
$t3 = str_replace ( "\'", "&apos;", $t);
$t4 = str_replace ( "'", "&apos;", $t); // ce n'est pas un échappement ...  ceci dit ...

echo $t . "<br><br>1 : NON ! " . $t1 . "<br><br>2 : OUI! " . $t2. "<br><br>3 : NON ! " . $t3 . "<br><br>4 : OUI! " . $t4;

?>
0
Devilish Messages postés 1431 Statut Membre 38
 
Hum je l'ai testé avant de poster... Mais comme tu m'as mis le doute j'ai pris ton bout de code, et chez moi ça marche...
Seul la solution pour le 2 ne marche pas chez moi... Là c'est étrange, ce qui ne marche pas chez lui marche chez moi?...
0
gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
non.
Verifies la source (code source)... TA solution n'échappes que dalle... y'a un backslash en trop dans ton strreplace.
0
Devilish Messages postés 1431 Statut Membre 38
 
J'ai vérifié la source et y'a aucun backslash je t'assure...
0
gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
Justement, il est là le problème...
0
Devilish Messages postés 1431 Statut Membre 38
 
Le but est d'afficher la page sans bug avec les simple quote non? Ou me serais-je trompé sur la question? Si c'est le cas j'avoue mon erreur...
0
gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 335 > Devilish Messages postés 1431 Statut Membre
 
Le problème, c'est que toi tu essayes de transformer \' dans le texte d'origine... cette suite de caractères n'existe pas !
0
fraid Messages postés 43 Statut Membre 5
 
je ne trouve pas la fonction attendue dans les commentaires !

j'ai testé celle ci :

preg_replace('{([\'\\\\])}', '\\\\$1', $test);

mais ne marche pas, j'en ai testé une autre trouvée un peu plus haut, pareil...

ce qui est bizzare c'est que ca marche sur ma page test, mais pas sur ma vrai page (avec le ligne par ligne) comment ca se fait ??
0
fraid Messages postés 43 Statut Membre 5
 
en fait le but est de passer le contenue d'une page php dans une variable, pour pouvoir l'afficher dans un textarea, a moins qu'il existe une solution plus simple à mon problème m'évitant de passer le contenue de la page dans une variable ???
0
Devilish Messages postés 1431 Statut Membre 38
 
Ah ok, effectivement après inspection oui j'ai bien rajouté une erreur gryzzly -_-'... Mais la partie avec le
&apos 
marche bien non? (ceci est une simple question pas une affirmation)
0
gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention   1 335
 
la mienne oui, la tienne non. encore une fois, un rpbleme de backslash en trop.
0
Devilish Messages postés 1431 Statut Membre 38 > gryzzly Messages postés 5220 Date d'inscription   Statut Contributeur Dernière intervention  
 
Ok merci gryzzly, je louerais ton nom ce soir^^... Je laisse notre amis entre tes mains expertes (à ne pas sortir du contexte)...
0
fraid Messages postés 43 Statut Membre 5
 
Ca ne marche pas chez moi en tous cas :-(

voici le script qui transforme le contenue de la page en variable :

$lignes_=file("$open_file");
$lignes= count($lignes_);

$texte_="";
for($oo=0;$oo<=$lignes;$oo++)
{
$tex=str_replace("'", "&apos", $lignes_[$oo]);

$tex=str_replace("</textarea>", "</textarea>", $lignes_[$oo]);
$texte_.="$tex\n";
}

et à la fin $texte_ contient ma page...
mais pourquoi cela ne marche pas ???
0