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 :

[Système] Modification d'une partie d'une variable


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut [Système] Modification d'une partie d'une variable
    Bonjour à tous,

    Dans le site que je suis en train de crée je suis en train de mettre en place un système de news.

    Celui-ci est réaliser grace à un formulaire + "textarea classique".
    Mais je souhaiterais pouvoir insérer où je le souhaite des images.

    Je recherche donc le moyen de modifier une variable (récupérer de ma base).
    Ou plus exactement appeler une fonction lorsqu'un mot apparait.

    Transformer
    "["IMG"]"1.2"[/"IMG"]"

    par un appel à la fonction correspondante
    image(1,2)
    et tout ceci au milieu d'un texte.

    En plus, clair:
    J'ai un formulaire qui enregistre dans ma BDD un text, avec au milieu une ""balise "["IMG"]"".

    Et lorsque j'affiche cette news, il remplace "["IMG"]", par une image. Ceçi grace à une fonction image, qui lui dis ou allez chercher l'image.



    J'espère être assez clair, merci à tous pour votre aide.

    Un peu comme sur ce site...

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut Une petite ide pour m'aider?
    Personne n'aurais une petite idée pour m'aider??

    Si mon message n'est pas clair hésitez pas à me le faire savoir, et j'essayerai d'être plus explicite ou répondre à vos questions.

    En tout les cas merci à tous

  3. #3
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    tu veux faire du BBCode en fait.

    Il faut te rapprocher des expressions regulieres (ne m'en demande pas plus, j'y connais rien).

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut ah effectivement!!!
    ouais sa a l'air d'être celà...
    Bon faut que je m'y mette.
    en tout les cas la_unge, je te remercie,
    si quelqu'un d'autre aurais une infos...

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut Ca marche mais...
    Bon effectivement le BBCode me permet de remplacer, [IMG]1,0[/IMG], en image(1,0).
    et si je fais un echo il n'affiche bien image(1,0).

    Mais mon problème c'est qu'après j'arrive pas à appeler la function pour autant?
    Un problème de type de variable je suppose?

    Merci à vous,

    Voici mon code.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
       $req = "SELECT title FROM ".$user_prefix."_stories WHERE sid=11 ";
        $result = $db->sql_query($req);
    	$row = $db->sql_fetchrow($result);
    echo"Text =$text<BR>"; //Text =[IMG](1,0)[/IMG]
    $str = "$text";
    echo preg_replace('#\[IMG\](.*)\[/IMG\]#Usi', 'image$1', $str);//image(1,0);
    $n=preg_replace('#\[IMG\](.*)\[/IMG\]#Usi', 'image$1', $str);
    echo"<BR>N =$n"; //N = image(1,0);
    $n; //:bug: Il est içi le pB!! (où il DEVRAIS lancer la fonction!!)
     
    function image($aid, $pos){
     
                            global $prefix, $db, $language, $multilingual, $bgcolor2, $admin_file, $t;
     
    echo "<BR>T=$t<BR>";
    	$l = 0;
    	    $sql = "SELECT * FROM cpg_pictures WHERE aid=$aid ORDER by filename";
    	    $result = $db->sql_query($sql);
     
    	while ($row = $db->sql_fetchrow($result)){
    			if ($pos == $l)
    				{    
    				$path = $row['filepath'];
    				$name = $row['filename'];
    				}
    		$l = $l + 1;
    		}
     
    	$img = "normal_".$name;	
    	echo "<img src=$path$img>";
    CloseTable();
    include("footer.php");
    }
    Mais il "lance" pas la function image().
    Pourtant si je met image(1,0), il m'affiche bien l'image.

    Merci à vous pour vos réponse.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Pour que le code du paramètre replacement de la fonction preg_replace soit interprété il faut utiliser le flag e (comme eval). Si vous préférez ne pas utiliser l'évaluation alors tournez-vous vers la fonction preg_replace_callback.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo preg_replace('#\[IMG\](.*)\[/IMG\]#Usie', 'image($1)', $str);
    Voir également ce sujet.

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut Merci
    Merci à toi.

    Bon je vais voir tout cela alors.

  8. #8
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut Ca fonctionne mais....
    Bonjour à tous.

    Le problème précedemment énoncer est en partie résolue.
    Effectivement il active ma fonction en remplacant le texte.

    Cependant, il supprime le texte qui a avant et après.

    En faite le souhaiterais, que dans ma table il y ai:
    text [IMG]1[/IMG] text2 [IMG]2[/IMG]
    et qu'il affiche
    text "affihe l'image1" text2 "affihe l'image2".

    Est possible, et comment dois je alors procéder.

    Merci à tous

  9. #9
    Membre habitué Avatar de Azazel.fr
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 170
    Points : 196
    Points
    196
    Par défaut
    je ne réponds pas à la question en t'apportant une réponse, mais pourquoi ne pas utiliser fckeditor ou quelque chose dans le style ?
    c'est un mini editeur de texte type "word" qui te permet d'insérer des liens, des urls, des images, etc...
    à voir par ici par exemple : http://www.fckeditor.net/demo
    il contient beaucoup d'options (des fois trop), mais le menu est paramétrable.

  10. #10
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut Je te remercie
    je te remercie, je connais en faite déjà fckeditor, mais ca répond pas à mes besoins.
    Mais merci quand même.

  11. #11
    Membre habitué Avatar de Sarrus
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mai 2005
    Messages : 180
    Points : 138
    Points
    138
    Par défaut
    j'utilise fck pour mon site, c'est vraiment tres bien.

  12. #12
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut
    Je dis pas que fckeditor n'est pas bon mais il ne correspond pas à mes attentes.
    Merci

  13. #13
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut Pour en revenir à ma question
    actuellement j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo preg_replace('#\[IMG\](.*)\[/IMG\]#Usie', 'image($1)', $str);
    Donc il replace bien [IMG]1,2[/IMG] par ma fonction image(1,2)
    Cependant je souhaiterais qu'il affiche le texte qu'il y a avant mette l'image, et continue avec la suite?
    est ce que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo preg_replace('#\[IMG\](.*)\[/IMG\]#Usie', #\'image($1)'#, $str);
    Merci à vous

  14. #14
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Votre fonction image, si elle ne retourne pas la valeur modifiée de son paramètre alors vos balises [IMG] seront tout simplement supprimées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    $str = "début[IMG]1,0[/IMG]milieu[IMG]2,3[/IMG]fin";
     
    echo preg_replace('#\[IMG\](.*)\[/IMG\]#Usie', 'image($1)', $str);
     
    function image($a, $b) {
        static $nb = 1;
        //echo $a . ' =&gt; ' . $b . '<br/>';
        return ' "afficher image n°' . $nb++ . '" ';
    }
    ?>
    on obtient bien :
    début "afficher image n°1" milieu "afficher image n°2" fin

  15. #15
    Membre régulier
    Inscrit en
    Septembre 2004
    Messages
    387
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 387
    Points : 109
    Points
    109
    Par défaut Super!!!!
    Genial!!!

    Mille merci à tous, et en particulier à julp.
    Ca y est sa fonctionne nikel, et comme je veux...

    C'est top!!!

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

Discussions similaires

  1. Assigner une partie d'une chaine dans une variable.
    Par beware dans le forum Langage
    Réponses: 3
    Dernier message: 26/09/2012, 10h02
  2. donner une couleur a une partie d'une forme
    Par ralf91 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 04/04/2008, 17h02
  3. Sélectionner seulement une partie d'une valeur d'une cellule
    Par ArthurO0O dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/08/2007, 11h05
  4. masquer une partie d'une vidéo par une banniere
    Par lezabour dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 16/10/2006, 16h47
  5. copier une partie d'une image vers une autre
    Par gregcat dans le forum Langage
    Réponses: 1
    Dernier message: 14/04/2006, 13h39

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