échapper les guillemets simples, erreur

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
Configuration: Windows XP
Internet Explorer 6.0

15 réponses

  1. Contributeur
    Salut,

    Tu devrais ouvrir un bon bouquin de php :o)

    addslashes() devrait t'être bien utile ....
    0
    1. sauf erreur de ma part addslashes ajoute des backslashes aux guillemets simples ET doubles, et je voudrais échapper uniquement les guillemets simples !
      0
      1. Contributeur
        Exact.
        Mais regardes les commentaires utilisateurs... tu va trouver ton bonheur :o)
        0
        1. Un string replace pourrait marcher ici?

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


          (Je me suis peut être trompé d'un backslash)
          0
          1. Contributeur
            ;o)
            Sympa de lui proposer la solution qu'il utilise ! :o)
            0
        2. Non y a un backslash en plus^^.
          0
          1. 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
            1. Contributeur
              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
              1. 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
                1. Contributeur
                  non.
                  Verifies la source (code source)... TA solution n'échappes que dalle... y'a un backslash en trop dans ton strreplace.
                  0
                  1. J'ai vérifié la source et y'a aucun backslash je t'assure...
                    0
                    1. Contributeur
                      Justement, il est là le problème...
                      0
                      1. 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
                      2. Contributeur
                        @DevilishLe problème, c'est que toi tu essayes de transformer \' dans le texte d'origine... cette suite de caractères n'existe pas !
                        0
                    2. 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
                      1. 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
                        1. 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
                          1. Contributeur
                            la mienne oui, la tienne non. encore une fois, un rpbleme de backslash en trop.
                            0
                          2. @gryzzlyOk merci gryzzly, je louerais ton nom ce soir^^... Je laisse notre amis entre tes mains expertes (à ne pas sortir du contexte)...
                            0
                        2. 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