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 :

Remplacer une chaine par un graphique [RegEx]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 46
    Points : 26
    Points
    26
    Par défaut Remplacer une chaine par un graphique
    Bonsoir à tous,
    J'avais une question dans ce sens il y a un petit moment mais sans réponse et comme je n'avance pas dans ce dév, je me permet de vous reproposer mon problème

    Dans mon back-office je créer un graphique via un formulaire et JS-Charts .
    Les infos du graphique sont donc enregistrés dans une table mysql avec un id.
    J'insère ensuite dans une page cette chaine de caractère :
    {graphique_12}
    12 est l'id du graphique enregistré dans la table.

    Enfin dans le site, j'aimerais remplacer la chaine {graphique_12} par une fonction qui ira récupérer dans la table le graphique (dont l'id est 12) et l'afficher.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $id=12;
    $pageTexte = str_replace("{graphique_".$id."}", return_graphique_from_page($id), $pageTexte);
    echo $pageTexte;
    le souci est que dans cet exemple l'id est en dur et ne provient pas de la chaine {graphique_12}

    merci de votre aide

  2. #2
    Membre actif

    Homme Profil pro
    Software Engineer
    Inscrit en
    Août 2004
    Messages
    173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 173
    Points : 220
    Points
    220
    Par défaut
    Si j'ai bien compris tu veux récupérer un $id dans une chaine de type
    {graphique_12} (ici on veut 12) et appeler une fonction sur cet identifiant une fois trouvé. Si c'est bien ça le code devrait ressembler à ca :
    (je te laisse te documenter sur les fonctions utilisés et vérifier que ça fonctionne c'est écrit rapidement)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $strgraph = '{graphique_'.$id.'}';
    $pos_underscore = strrpos($strgraph,'_');
    $id = substr($strgraph,-1,$pos_underscore);
    $pageTexte = return_graphique_from_page((int)$id);
    echo $pageTexte;

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Bonjour et merci de votre réponse,
    Ca me semble bien mais comment faire lorsque la chaine est "noyée" dans un texte et il peut en plus y avoir plusieurs chaines à remplacer.

    Exemple d'une page pour une collectivité :

    Graphique démographique au 02/02/2009
    {graphique_12}

    Graphique des naissances au 02/02/2009
    {graphique_24}

    Graphique des décès au 02/02/2009
    {graphique_02}

    merci

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Points : 34
    Points
    34
    Par défaut
    tu peux faire avec un preg_replace

    ça donnerait quelque chose un peu comme ç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
    $str = <<<EOT
    Graphique démographique au 02/02/2009 
    {graphique_12} 
     
    Graphique des naissances au 02/02/2009 
    {graphique_24} 
     
    Graphique des décès au 02/02/2009 
     
    {graphique_02}
    EOT;
     
    function trans2graph($id) {
    // fabrication du graphique
     
    	return 'gaphique '.$id;
    }
     
    $string = preg_replace('/{graphique_([0-9]+)}/e', "''.trans2graph('\\1').''", $str);
     
    echo $string;

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    Est-ce que c'est obligatoire de mettre le texte entre :
    <<<EOT et EOT;

    merci

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 46
    Points : 26
    Points
    26
    Par défaut
    apparemment ca marche correctement ! C'est génial !

    $str = "Les expressions régulières {graphique_12} permettent facilement ce {graphique_24} de style de traitement.";

    function trans2graph($id) {
    $Sql = mysql_query('SELECT graphique FROM listeGraphiques where id = "'.$id.'"');
    $Row = mysql_fetch_array($Sql);
    return $Row[nom_domaine];
    }
    $string = preg_replace('/{graphique_([0-9]+)}/e', "''.trans2graph('\\1').''", $str);
    echo $string;

    // affiche
    Les expressions régulières graphique12 permettent facilement ce graphique24 de style de traitement.

    // en fait, ca affiche un graphique à la place de graphique12
    et un graphique à la place de graphique24

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

Discussions similaires

  1. [RegEx] Remplacer une chaine par un lien sans exploser les balises
    Par yahoowaloo dans le forum Langage
    Réponses: 5
    Dernier message: 19/07/2011, 11h39
  2. Remplacer une chaine par une autre
    Par baime dans le forum SAS Base
    Réponses: 2
    Dernier message: 23/10/2009, 12h42
  3. Remplacer une chaine par une autre
    Par rivsc dans le forum Ruby
    Réponses: 4
    Dernier message: 12/05/2009, 11h25
  4. Réponses: 3
    Dernier message: 11/09/2007, 17h58
  5. [Système] Remplacer une chaine par un lien hypertexte
    Par Bisûnûrs dans le forum Langage
    Réponses: 10
    Dernier message: 06/06/2007, 09h34

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