Reg Exp und BBCode

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Reg Exp und BBCode

    Hallo!
    Ich habe ein Problem mit den ... Reg Exps von PHP. Und zwar möchte ich, genau wie in diesem Forum Smilies in einem Text einfügen lassen, Z.B. bei zu. Kennt wohl jeder. Und wohl jeder kennt auch den BBCOde Tage [code ] ... Ich möchte nun, das das oben angesproche ersetzen nur stattfindet, wenn das Zeichen nicht zwischen [code ] und [/code ] steht. Wie kriege ich das hin? Bis jetzt hab ich das immer so gemacht:

    $out=str_replace ("$smilie[zeichen]", "<img border=0 src=$options[imgdir]/smilies/$smilie[pic]>", $out);

    Vielen Dank...

  • #2
    preg_replace("/[\^[code\]].*(--hier Dein Smily--).*/m"," <img usw.>","zu durchsuchender Text");

    [^\[code\]] -> wenn sich [code] micht vor dem Suchausausdruck
    befindet
    .* -> beliebige Zeichen
    /m -> multiline Modus

    lediglich das in den Klammern wird ersetzt ()

    die Richtung müßte stimmen,
    viel spaß beim rumprobieren

    Kann dieses Buch empfehlen:
    Jeffrey E.F Friedl
    Reguläre Ausdruecke
    Verlag: O'Reilly

    gruesse
    robert

    Kommentar


    • #3
      Danke für deine Antwort, aber leider erhalte ich nix außer einer Menge Fehlermeldugen. Ich poste jetzt mal meine ganze Funktion (mit deinem Replace):

      Code:
      function addsmilies($out)
      {
      global $options;
      
      $this->query("SELECT * from ra_smilies");
      while($this->next_record())
       {
        $smilie = $this->Record;
      
        $out = preg_replace("/[\^[code\]].*$smilie[zeichen].*/m"," <img border=0 src=$options[imgdir]/smilies/$smilie[pic]>",$out);
      
      }
      
      return $out;
      }

      Kommentar

      Lädt...
      X