Je n'arrive pas à comprendre ce bout de code...

Discussion dans 'Web, design' créé par k o D, 21 Février 2004.

Statut de la discussion:
Fermée.
  1. Offline
    k o D Belge !
    Voilà, ce code-ci:

    Code:
    function convert_message($message,$affichesmiley)
    {
      $debut_cite = "<br/>
                    <table width=\"85%\" cellspacing=\"0\" border=\"1px\" cellpadding=\"0\" bordercolor=\"#000000\">
                    <tr>
                      <td>
                        <span style=\"font-size:10px\">";
      $fin_cite = "</span><br/>
                      </td>
                    </tr>
                    </table>";
      $message = eregi_replace("\[cite:(.+)\](.+)\[/cite\]", "Citation de \\1 $debut_cite \\2 $fin_cite ", $message );
      if($affichesmiley=="true")
      {
        $fp = file("smileys.txt");
        $i=0;
        $fin = sizeof($fp);
        while($i!=$fin)
        {
          $chaine = $fp[$i];
          $image2 = stristr($chaine, " ** ");
          $image = str_replace(" ** ","",$image2);
          $symbole = str_replace($image2 ,"", $chaine);
          $image = trim($image);
          $message = str_replace($symbole,"<img src=\"smiley/$image\" alt=\"$image\">",$message);
          $i++;
        };
      };
    /* Au cas ou la nouvelle version ne marche pas, cette versionmarche un peu :D
      $message = eregi_replace("\[img\]([^[]*)\[/img\]", '<IMG SRC=\\1 ALT=\\1>', $message );
      $message = eregi_replace("\[b\]([^[]*)\[/b\]", '<B>\\1</B>', $message );
      $message = eregi_replace("\[i\]([^[]*)\[/i\]", '<i>\\1</i>', $message );
      $message = eregi_replace("\[u\]([^[]*)\[/u\]", '<u>\\1</u>', $message );
      $message = preg_replace("/([\w\.]+)(@)([\w\.]+)/i", "<a href=\"mailto:$0\">$0</a>", $message);
      $message = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i","$1http://$2",$message);
      $message = preg_replace("/^(=)([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i","<A TARGET=\"_blank\" HREF=\"$1\">$1</A>",$message);
    */
      $message = eregi_replace("\[b\]([^[]*)\[/b\]", '<b>\\1</b>', $message );
      $message = eregi_replace("\[i\]([^[]*)\[/i\]", '<i>\\1</i>', $message );
      $message = eregi_replace("\[u\]([^[]*)\[/u\]", '<u>\\1</u>', $message );
      $message = preg_replace("/([\w\.\-]+)(@)([\w\.\-]+)/i", "<a href=\"mailto:$0\">$0</a>", $message);
      $message = preg_replace("/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i","$1http://$2",$message);
      $message = preg_replace("/([\w]+:\/\/[\w-?&;#~=\.\/\@]+[\w\/])/i", "<a target=\"_blank\" href=\"$1\">$1</a>",$message);
      $message = eregi_replace("\[img\]<a target=\"_blank\" href=\"([^[]*)\">([^[]*)</a>\[/img\]", '<img src=\\2 ALT="\\2">', $message );
      $message = eregi_replace("\[img\]([^[]*)\[/img\]", '<img src=\\1 ALT="\\1">', $message );
    
      return $message;
    };
    
    Il permet de modifier une chaine de caractère pour savoir afficher les smileys etc... (Comme le fait ce forum pour afficher les citations, les smileys etc...)

    En fait je ne comprend pas cette ligne:

    Code:
      $message = eregi_replace("\[cite:(.+)\](.+)\[/cite\]", "Citation de \\1 $debut_cite \\2 $fin_cite ", $message );
      
    k o D, 21 Février 2004
    #1
  2. Offline
    k o D Belge !
    Mouais... :?
    k o D, 22 Février 2004
    #2
  3. Offline
    Carambar He once forgot how to cry
    La fonction eregi_replace sert à remplacer une chaîne de caracterès avec une autre chaîne. Ca peut être très utile dans certains cas. Plus d'infos ici :

    http://www.manuelphp.com/php/function.eregi-replace.php
    Carambar, 22 Février 2004
    #3
  4. Offline
    k o D Belge !
    oui je suis déjà aller voir, mais je ne capte ce que c'est qe celà:

    Code:
    \[cite:(.+)\](.+)\[/cite\]", 
    k o D, 22 Février 2004
    #4
  5. Offline
    Carambar He once forgot how to cry
    prototype :
    Code:
    string  eregi_replace ( string pattern , string replacement , string string)
    Code:
    $message = eregi_replace("\[cite:(.+)\](.+)\[/cite\]", "Citation de \\1 $debut_cite \\2 $fin_cite ", $message );
    string pattern : \[cite:-(.+)\](.+)\[/cite\]
    string replacement : Citation de \\1 $debut_cite \\2 $fin_cite
    string string : $message

    Donc, tout ce qui est [cite:-(...)](...)[/cite] dans $message est remplacé par "Citation de \1 $debut_cite \2 $fin_cite". Je suppose que (.+) est une expréssion qui représente une chaîne de caractères indeterminée.

    P.S: \ est utilisé pour les séquences d'échappement pour éviter d'utiliser certains caractères propres à un langage de programmation.
    Carambar, 22 Février 2004
    #5
  6. Offline
    BaKa Touriste
    BaKa, 22 Février 2004
    #6
  7. Offline
    k o D Belge !
    bon concretement, si dans cette phrase:

    je veux changer le [:)] par le smiley "01.gif" et mettre la phrase en gras (avec les balises [ b] et [ /b]) je fais comment?
    k o D, 22 Février 2004
    #7
  8. Offline
    Styleman Touriste
    Styleman, 22 Février 2004
    #8
  9. Offline
    k o D Belge !
    Oui merci, j'ai trouvé mon bonheur. :D
    k o D, 22 Février 2004
    #9
Statut de la discussion:
Fermée.