échapper les guillemets simples, erreur

Fermé
fraid Messages postés 42 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 29 mars 2009 - 18 avril 2008 à 09:58
Devilish Messages postés 1425 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 janvier 2009 - 18 avril 2008 à 12:43
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 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
18 avril 2008 à 11:12
Salut,

Tu devrais ouvrir un bon bouquin de php :o)

addslashes() devrait t'être bien utile ....
0
fraid Messages postés 42 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 29 mars 2009 5
18 avril 2008 à 11:17
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 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
18 avril 2008 à 11:25
Exact.
Mais regardes les commentaires utilisateurs... tu va trouver ton bonheur :o)
0
Devilish Messages postés 1425 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 janvier 2009 38
18 avril 2008 à 11:25
Un string replace pourrait marcher ici?

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


(Je me suis peut être trompé d'un backslash)
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
18 avril 2008 à 11:27
;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 1425 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 janvier 2009 38
18 avril 2008 à 11:31
Non y a un backslash en plus^^.
0
Devilish Messages postés 1425 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 janvier 2009 38
18 avril 2008 à 11:35
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 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
18 avril 2008 à 11:48
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 1425 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 janvier 2009 38
18 avril 2008 à 11:54
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 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
18 avril 2008 à 11:55
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 1425 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 janvier 2009 38
18 avril 2008 à 11:58
J'ai vérifié la source et y'a aucun backslash je t'assure...
0
gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
18 avril 2008 à 11:59
Justement, il est là le problème...
0
Devilish Messages postés 1425 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 janvier 2009 38
18 avril 2008 à 12:01
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 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334 > Devilish Messages postés 1425 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 janvier 2009
18 avril 2008 à 12:03
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 42 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 29 mars 2009 5
18 avril 2008 à 11:59
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 42 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 29 mars 2009 5
18 avril 2008 à 12:06
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 1425 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 janvier 2009 38
18 avril 2008 à 12:09
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 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020 1 334
18 avril 2008 à 12:34
la mienne oui, la tienne non. encore une fois, un rpbleme de backslash en trop.
0
Devilish Messages postés 1425 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 26 janvier 2009 38 > gryzzly Messages postés 4608 Date d'inscription lundi 7 novembre 2005 Statut Contributeur Dernière intervention 24 octobre 2020
18 avril 2008 à 12:43
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 42 Date d'inscription vendredi 18 avril 2008 Statut Membre Dernière intervention 29 mars 2009 5
18 avril 2008 à 12:30
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