[PHP] Funktionen

Dieses Thema im Forum "Webentwicklung" wurde erstellt von eYo, 4. September 2006 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 4. September 2006
    Funktionen

    Hallo, ich habe eine Datei in der ich meine PHP Funktionen definiere.

    Unter anderem werden dort die Smilie Replace's festgelegt, z.B. durch

    PHP:
    <? php

    function  smilies ( $str )
     {
        
    $str  str_replace ( ':D' '<img src="images/smilies/blasmilie.gif" alt="blasmilie" />' $str );

      return 
    $str ;
    }

    ?>
    Jetzt aber was anderes. Ich möchte gerne eine Quote-Funktion in mein Forum integrieren. Bisher habe ich es folgendermaßen realisiert:

    PHP:
    // Normaler Quote //

            
    $str  preg_replace ( '=\[quote\](.*)\[/quote\]=Uis' ,
                                
    '<br \><table class="quote"><tr><td><b>Zitat:</b></td></tr><tr><td>\1</td></tr></table>' ,
                                
    $str );

    // Ende Normaler Quote //

    // Erweiterter Quote mit Verfasser des Zitierten Textes //

            
    $str  preg_replace ( '#\[quote=(.*)\](.*)\[/quote\]#Uis' ,
                                
    '<br \><table class="quote"><tr><td><b>Zitat: \1</b></td></tr><tr><td>\2</td></tr></table>' ,

    // Ende Erweiterter Quote mit Verfasser des Zitierten Textes //

    Mein Problem ist jetzt, dass ich nicht in einem Quote ein weiteresmal Quoten kann. Wie realisiere ich das? Wenn ich jetzt aus der MySQL-Tabelle den Text auslesen lasse:

    PHP:
    <? php  echo  kotfunktion ( $f [ 'text' ]);  ?>
    Dann zeigt er mir wenn in der Tabelle steht:

    [ quote ]blablubb
    [ quote ]blaaaaa[ /quote ]
    [ /quote ]

    (ich musste da jetzt leerzeichen hinmachen sonst hätten mir die BBCode Funktionen vom vB da tatsächlich Quotes rausgemacht -.-)

    Den ersten Quote richtig in der Tabelle an und dann zeigt er mir unter dem "blablubb" den normalen text weiter an, also [ quote ]blaaa.
    Unter dem Quote steht dann einzeln nochmal [ /quote ]

    Ich möchte aber jetzt z.B. mehrere Tabellen in einer angezeigt haben (mehrere Quotes in einem).

    Ich hoffe mir kann jemand helfen...
     
  2. 4. September 2006
    hab jetzt gute 10 minuten rumgegoogelt und nix finden können. aber n begriff, der dir vielleicht bei der suche helfen können, ist "nested quotes".
     
  3. 4. September 2006
    AW: Funktionen

    Google mal nach BB Code Parser, da wirst du fündig. Findeste alles, [B ] [I ] [U ] [QUOTE blabla..
     
  4. 4. September 2006
    AW: Funktionen

    Ich hab alle anderen BBCodes, nur mein Quote BBCode funktioniert nicht
     
  5. 4. September 2006
    AW: Funktionen

    PHP:
     $str  preg_replace ( "(\[quote\](.+?)\[\/quote\])is" , "</p><blockquote>\\1</blockquote><p>" , $str );
            
    $str  preg_replace ( "(\[quote=(.+?)\](.+?)\[\/quote\])is" , "</p><blockquote><b>By $1:</b><br />$2</blockquote><p>" , $str ); 
    meine version des ganzen einmal mit quelle einmal ohne
     
  6. 4. September 2006
    AW: Funktionen

    Das funktioniert bei mir irgendwie auch nicht
    Dann wird ebenfalls wieder nur das erste [ quote] und das 1. [ /quote] benutzt, danach steht wieder nur der Text da wie ich ihn geschrieben hab


    EDIT:

    habe jetzt etwas was wohl funktioniert aber ich versteh jetzt nicht wie ich das mit dem "[ quote=nickname]" mache, das könnte mir nicht zufällig kurz jemand umschreiben? :X

    PHP:
     $open  '<blockquote style="border: 1px solid #000000; padding: 4px;">' ;
            
    $close  '</blockquote>' ;

            
    // How often is the open tag?
            
    preg_match_all  ( '/\[quote\]/i' $str $matches );
            
    $opentags  count ( $matches [ '0' ]);

            
    // How often is the close tag?
            
    preg_match_all  ( '/\[\/quote\]/i' $str $matches );
            
    $closetags  count ( $matches [ '0' ]);

            
    // Check how many tags have been unclosed
            // And add the unclosing tag at the end of the message
            
    $unclosed  $opentags  $closetags ;
            for (
    $i  0 $i  $unclosed $i ++) {
                    
    $str  .=  '</blockquote>' ;
            }

            
    // Do replacement
            
    $str  str_replace  ( '[quote]' $open $str );
            
    $str  str_replace  ( '[/quote]' $close $str ); 
    Danke im vorraus.


    EDIT 2:

    Habs zwar schon vor längerer Zeit gelöst aber ich schreibs mal rein, vielleicht kanns irgendwann mal jemand gebrauchen (vorrausgesetzt dieser "jemand" benutzt dann die Suchfunktion )

    PHP:
    $str  preg_replace ( '=\[quote\]=Uis' , '<table><tr><td><span class="smallfont"><b>Zitat:</b></span></td></tr><tr><td>' , $str );
    $str  preg_replace ( '=\[/quote\]=Uis' , '</td></tr></table>' , $str );
            
    $str  preg_replace ( '=\[quote\=(.*)\]=Uis' , '<table><tr><td><span class="smallfont"><b>Zitat: \1</b></span></td></tr><tr><td>' , $str );
    $str  preg_replace ( '=\[/quote\]=Uis' , '</td></tr></table>' , $str );
     
  7. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.