IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Php dans un InnerHTML qui lui se trouve une preg_replace


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 3
    Points
    3
    Par défaut Php dans un InnerHTML qui lui se trouve une preg_replace
    Salut, j'ai un preg_replace en php, dedans se trouve une fonction javascript qui me permet de remplacer un texte par un autre, et donc dans ce code se trouve un innerHTML où je place une variable.

    Ce que je souhaite faire c'est échapper mes apostrophes des variables qui se trouve dans ce code javascript, pour cela je ferais

    innerHTML ='addslashes($1);' mais nop ça marche pas, dans le code source il m'affiche addslashes(puis le code html de $1); , en gros il prend pas en compte le php

    voila mon preg replace entier

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $message = preg_replace("#\[spoil2=(.+)\](.+)\[/spoil2=(.+) var=(.+)\]#isU", "
    <div id=\"test\"><a style=\"cursor:pointer;\" onclick=\"change();\"><div id=\"momo\">$1</div></a><div id=\"popo\">$2</div></div>
    <script type=\"text/javascript\">
    function change() {
        if (document.getElementById('momo').innerHTML == 'addslashes('$4');';
            document.getElementById('popo').innerHTML = 'addslashes('$2');';
        }   else {
            document.getElementById('momo').innerHTML = 'addslashes('$4');';
            document.getElementById('popo').innerHTML = 'addslashes('$3');';
        }               
    }
     
    </script>", $message);

    Vous avez des idées ? merci !

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Tu ne peux pas procéder comme ça... Le second paramètre de preg_replace() est une chaine de caractères (ou un tableau de chaines), tu ne peux donc pas y appeler de fonction PHP.
    En plus, tu multiplies les définitions de fonctions JavaScript ayant le même nom, c'est n'importe quoi...
    Il faut que tu revoies complètement le fonctionnement de ton truc en séparant correctement les traitements serveur (PHP) des traitements client (JavaScript) sinon, tu ne pourras pas t'en sortir !

  3. #3
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    mince alors, existerais-t-il pas quelque chose pour échapper les apostrophes seulement de ces variables ? (sans devoir le faire à la main : passer par le panel où j'écris mes articles) et sans devoir tout revoir le preg replace ?

    en tout cas merci de ta réponse

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi tu veux échapper tes apostrophes ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    Vu que ses variables se trouvent dans un code javascript, si il y a une apostrophe dans une variable à l'affichage, la fonction plante, coince, marche pas. En gros lors du onclick, la fonction change fonctionne pas.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Si j'arrive à te suivre, tu as une fonction Javascript qui remplace le contenu de 2 <div> par un nouveau texte.
    Où et comment est défini le nouveau texte ?

  7. #7
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    enfaite j'ai 4 variables : $1,$2,$3,$4, voici comment marche ce preg replace

    titre1 = $1
    texte1=$2

    je clique sur titre

    titre2 devient $3
    texte2 devient $4

    si je reclique sur titre2, titre2 redevient titre1 et texte2 redevient texte1

    les 4 variables sont définies dans la première chaine de mon preg replace , aux 4 endroits où se trouve (.+) , ensuite pour écrire un article je vais dans mon panel d'admin et là avec la balise [spoil2=titre1]texte1[/spoil2=texte2 var=texte3]
    dans chaque variables je place mes textes.

    je pense avoir répondu à ta question^^

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    enfaite j'ai 4 variables : $1,$2,$3,$4
    Ca commence mal

    Bon pour ton code, tu ne peux pas, comme te l'as dit Bovino, utiliser des fonctions PHP dans du code Javascript.

    Puisque tu visiblement tu cherches à faire une balise Spoiler, regarde plutot en CSS et Javascript, PHP n'est pas adapté pour faire ça.

  9. #9
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    je suis obligé de passer par du php (par l'intermédiaire du preg_replace) pour convertir une chaine en une autre qui me servira dans mon bbcode sur mon panel

    pour bien, faudrait que j'entoure de javascript soit d'un innerHTML, ma variable $message, j'ai essayé comme ça mais page blanche, c'est aussi une impossibilité ?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<div id="test2"></div><script type=\"text/javascript\">	document.getElementById(\'test2\').innerHTML = '$message;'</script>';

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<div id="test2"></div><script type=\"text/javascript\">	document.getElementById(\'test2\').innerHTML = "' . $message . '"</script>';
    je suis obligé de passer par du php (par l'intermédiaire du preg_replace) pour convertir une chaine en une autre
    Tu es obligé uniquement parce que tu t'es engagé dans une mauvaise voie.
    C'est pour ça que je te dis de partir sur les solutions adaptées à ce que tu veux faire.
    Si l'interpretation du BBCode peut se faire en PHP, l'activation du Spoiler, c'est à dire l'affichage d'un texte à la place d'un autre doit se faire en Javascript/CSS.
    D'ailleurs en voulant remplacer le texte, tu te bornes déjà dans une voie ; une méthode plus courante est d'afficher/masquer les zones voulues.

  11. #11
    Candidat au Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 3
    Points
    3
    Par défaut
    oui peut-être, c'est juste que le reste de mon bbcode (qui n'est pas de moi) était comme ça donc j'ai juste créé de nouvelles balises en m'inspirant de comment mon webmaster a fait.

    sinon concernant le problème, si je l'entoure de javascript j'aurais encore plein de problèmes avec des \ enfin bref j'ai trouvé un autre solution ( : créer une autre page qui me permet de créer d'autres pages mais qui a pour but de créer d'autres contenant seulement cette balise spoil) enfaite comme je l'ai dit en faisant addslashes puis str replace \\\\ en '' donc qui me supprimait mes slashes, j'ai plus de slashes dans mes variables qui sont entourés de ma balise spoil,mais le truc c'est que mes autres pages qui font pas appel à la balise spoil ont des \ en trop (vu que ils sont pas en javascript)

    c'est résolu^^ merci de m'avoir répondu sinon j'aurais tourné en rond encore longtemps!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser php dans javascript pour traitement sur value d'une combobox
    Par filiplarlibe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/03/2010, 13h43
  2. php dans javascript (innerHTML)
    Par kanabzh29 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/09/2008, 17h03
  3. Réponses: 2
    Dernier message: 15/06/2007, 01h35
  4. Réponses: 2
    Dernier message: 13/03/2007, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo