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 :

Variable "dynamique" avec preg_replace [RegEx]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Variable "dynamique" avec preg_replace
    Bonjour,



    J'ai un petit souci avec une fonction que j'ai codé. Pour ma question, j'ai isolé et élagé la partie de son code qui pose problème. Comme ça vous comprendrez mieux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?
     
    	// Variable bidon, tableau à une seule entrée...
    	$myrow ['test'] = "Simon";
     
    	// Le texte que PREG_REPLACE va retourner 
    	$body = "Salut je m'appelle [=test] et il est bientôt l'heure d'aller dormir.";
     
    	// Format de sortie
    	$preg = "$1";
     
    	// Je souhaite que PREG_REPLACE remplace [=x] par $myrow[x]
    	echo $took = preg_replace("/\[=([^ ]+)\]/", $myrow["$preg"], $body);
     
     
    ?>
    Ce que je souhaite c'est que PREG_REPLACE remplace le "[=test]" dans la variable $body, par $myrow['test'] (en tant que variable, pas en tant que texte). Donc qu'il affiche "Salut je m'appelle Simon il est bientôt l'heure d'aller dormir."

    J'ai un peu tout essayé mais je suis pas très calé au niveau des variables. Donc ça m'affiche des trucs du genre : "Salut je m'appelle $myrow["test"] il est bientôt l'heure d'aller dormir." etc. Ou alors ça bugue.

    Vous pouvez m'aider?

    Simon

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Résolu
    J'ai trouvé ma solution (je vous cache pas que ça faisait quelques heures que ça me tracassait)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?
     
    	// Variable bidon, tableau à une seule entrée...
    	$myrow ['test'] = "Simon";
     
    	// Le texte que PREG_REPLACE va retourner 
    	$body = "Salut je m'appelle [=test] et il est bientôt l'heure d'aller dormir.";
     
    	// Format de sortie
    	$preg = '$myrow[' . "$1" . ']';
     
    	// Je souhaite que PREG_REPLACE remplace [=x] par $myrow[x]
    	$took = preg_replace("/\[=([^ ]+)\]/", $preg, $body);
    	eval( "\$took= \"$took\";" );
    	echo $took;
     
    ?>
    Il suffit juste de faire intervenir la function php EVAL !

    Je pense que ça pourra servir à certains, donc je le mets...! Bon le code est pas super clair ni optimisé, mais ça donne le résultat que je veux!

    A bientôt,

    Simon

  3. #3
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Sa ne fonctionne pas ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?
     
        // Variable bidon, tableau à une seule entrée...
        $myrow ['test'] = "Simon";
     
        // Le texte que PREG_REPLACE va retourner 
        $body = "Salut je m'appelle [=test] et il est bientôt l'heure d'aller dormir.";
     
        // Je souhaite que PREG_REPLACE remplace [=x] par $myrow[x]
    $took = preg_replace("/\[=([^ ]+)\]/", $myrow[$1], $body);
     
    echo $took;
     
    ?>

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Non
    Non ça ne fonctionne pas ça

  5. #5
    Membre éclairé Avatar de Korko Fain
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    632
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 632
    Points : 718
    Points
    718
    Par défaut
    Et ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <?php
     
    function callback($matches)
    {
    global $myrow;
     
    return $myrow[$matches[1]];
    }
     
        // Variable bidon, tableau à une seule entrée...
        $myrow ['test'] = "Simon";
     
       // Le texte que PREG_REPLACE va retourner 
        $body = "Salut je m'appelle [=test] et il est bientôt l'heure d'aller dormir.";
     
        // Je souhaite que PREG_REPLACE remplace [=x] par $myrow[x]
    $took = preg_replace_callback("/\[=([^ ]+)\]/", 'callback', $body);
     
    echo $took;
     
    ?>

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

Discussions similaires

  1. Update avec variable contenant une quote
    Par NejNej dans le forum Développement
    Réponses: 2
    Dernier message: 13/11/2009, 17h51

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