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 :

[Tableaux] Remplacement de valeurs dans un texte


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut [Tableaux] Remplacement de valeurs dans un texte
    Bonjour,

    je possède une variable qui contient un texte avec des tags du genre "#variable#".
    J'aimerais pouvoir remplacer dans le texe toutes les variables entre des # par leur valeur.
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $texte="Bonjour #user->nom#, votre site porte le numéro #site_id# et le texte est écrit en  #tableau_lang[fr]# ";
    $site_id=45;
    $tableau_lang=array("fr"=>"français","en"=>"Anglais);
    $user=new user();
    $user->nom="Martin";
     
    echo functionXXX($texte);
    Ce qui me retournerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Bonjour Martin, votre site porte le numéro 45 et le texte est écrit en  français.
    J'ai fait de multiples essais avec preg_replace, mais je n'ai pas réussi à tout retourner...
    Un des problèmes est que je type de variable peut être simple, une valeur d'un tableau ou une valeur d'un objet instancié. De plus, je ne sais pas à l'avance les variables qui seront utilisées dans la chaine de texte du départ...

    Si quelqu'un a une idée ?

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Je crois que tu es bien parti
    pour les valeurs a mettre dans ton texte tu peux concatener une chaine de caractères c'est a dire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $site_id=45; 
    $tableau_lang=array("fr"=>"français","en"=>"Anglais); 
    $user=new user(); 
    $user->nom="Martin"; 
     
    $texte="Bonjour". $user->nom.", votre site porte le numéro ".$site_id." et le texte est écrit en ".$tableau_lang[fr]. "; 
     
     
    echo functionXXX($texte);
    Ainsi tu peux faire ce que tu demandes

    Citation Envoyé par JavaSearch
    De plus, je ne sais pas à l'avance les variables qui seront utilisées dans la chaine de texte du départ...
    Tu sais quelle variable vont aller là mais ton texte est fait de manière dynamique par rapport à l'usager qui c'est connecté et ce qu'il a choisis...
    Donc il s'uffit d'attribuer la valeur aux variables qui vont etre dans ta chaine que tu affiche
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Citation Envoyé par ozzmax
    Tu sais quelle variable vont aller là mais ton texte est fait de manière dynamique par rapport à l'usager qui c'est connecté et ce qu'il a choisis...
    Donc il s'uffit d'attribuer la valeur aux variables qui vont etre dans ta chaine que tu affiche
    Et bien non justement...
    La chaine de caractère est issue d'un formulaire dans lequel l'utilisateur aura inséré des tags.
    Il est donc impossible d'utiliser la première solution pour construire la chaine.
    De plus, je ne sais pas à l'avance les variables qui seront utilisées par l'utilisateur (ces variables sont crées par l'utilisateur lui même).

    Pour résumer : l'utilisateur crée ses propres variables (je les mets dans un tableau ou un objet) et ensuite, il les insère dans le texte de son choix.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    J'ai enfin trouvé une solution :

    je crée des tags encapsulés par des [# et des #]
    et je remplaces ces tags par des ".$ et des ."
    ce qui donne :
    Bonjour [#user->nom#]
    puis
    Bonjour ".$user->nom."
    puis
    eval('$chaine="Bonjour ".$user->nom." "');

    Voici l'expression :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $site_id=45; 
    $tableau_lang=array("fr"=>"français","en"=>"Anglais"); 
    $user=new user(); 
    $user->nom="Martin"; 
     
    $texte="Bonjour [#user->nom#], votre site porte le numéro [#site_id#] et le texte est écrit en [#tableau_lang[fr]#]"; 
     
     
     
    eval('$chaine="'.preg_replace(array("(\[#)","(#\])"),array("\".$",".\""),$texte).'";');
     
    echo $chaine;

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Attention !
    variables définies par l'utilisateur + eval == gros trou de sécurité ! Enfin moi je dis ça, je dis rien...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Aye... j'avais pas pensé à ça...

    En fait, l'utilisateur c'est moi...
    Je travaille sur un CMS dans lequel j'ai une table de parametres qui sont le titre du site, l'url, etc..

    Je souhaite ensuite réutiliser ces valeurs dans des articles en définissant un tag particulier ...

    Quelqu'un aurait-il donc une autre solution à me proposer...

  7. #7
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Si tu es certain que tu es le seul utilisateur à travailler, tu es libre de te faire des trous de sécurité

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Mr N.
    Attention !
    variables définies par l'utilisateur + eval == gros trou de sécurité ! Enfin moi je dis ça, je dis rien...
    Car tu peux évaluer des variables de session par exemple, interdites à l'utilisateur, j'imagine ?

Discussions similaires

  1. Réponses: 13
    Dernier message: 18/07/2006, 23h06
  2. [Tableaux] remplacer les espaces dans URL
    Par jmjmjm dans le forum Langage
    Réponses: 9
    Dernier message: 02/03/2006, 11h26
  3. Réponses: 4
    Dernier message: 09/01/2006, 01h24
  4. [Tableaux] Extraction de valeur dans un tableau
    Par pirouette_07 dans le forum Langage
    Réponses: 6
    Dernier message: 21/10/2005, 17h54
  5. [Tableaux]Ajouter des valeurs dans un tableau
    Par Antoine1183 dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 03/04/2005, 13h41

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