[Thema] [S] Simple BBCode Klasse

Dieses Thema im Forum "Webentwicklung" wurde erstellt von DOWNandOUT, 18. August 2008 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 18. August 2008
    Simple BBCode Klasse

    Tag,

    ich suche eine Simple BBCode Klasse die nur folgendes können muss:

    - BOLD Text
    - Kursiv Text
    - Unterstrichener Text
    - Youtubevideos einbinden
    - Eine Liste
    - IMG Tag

    Also das man z.B. Youtube Videos mit einbinden kann.

    Habe bei Google geschaut aber dort nichts passendes gefunden.

    MfG
    Jan225
     
  2. 18. August 2008
    AW: Simple BBCode Klasse

    Tuts das?
    BBCode-Parserklasse f
     
  3. 18. August 2008
    AW: Simple BBCode Klasse

    Die hatte ich mir auch schon angesehen nur da ist das Problem das quasi die wichtigste Funktion, also der Youtube BBCode fehlt.
     
  4. 18. August 2008
    AW: Simple BBCode Klasse

    TinyMCE, ein WYSIWYG Editor den man recht einfach in Seiten einbauen kann. Er bietet so ziemlich alles was man brauch.

    TinyMCE - Home
    TinyMCE - 404 - Page not found examples
     
  5. 18. August 2008
    AW: Simple BBCode Klasse

    Der kann viel zu viel Ich brauche wie oben gesagt halt ne ganz Simple BBCode Klasse.
     
  6. 18. August 2008
    AW: Simple BBCode Klasse

    Du kannst glaub funktionen ausschalten bei tinymce
    Naja, alternativ hätte ich jetzt nichts per rat, bei Php Scripte Downloads Tutorials bei Dreamcodes gibts viele fertige scripts..
     
  7. 18. August 2008
    AW: Simple BBCode Klasse

    Schreib dir selber eine. Die kann dann genau das was du auch haben willst.
     
  8. 18. August 2008
    AW: Simple BBCode Klasse

    Habe jetzt folgendes gefunden: Php Scripte Downloads Tutorials bei Dreamcodes - Texte
    Könnte mir jemand der Ahnung hat vielleicht kurz erklären wie das Ding funktioniert, also wie ich es einsetze?
     
  9. 18. August 2008
    AW: Simple BBCode Klasse

    PHP:
    <? php
    // $text = Der zu parsende Text
    $parseResult  bbcode ( $text );
    ?>
    ^^
     
  10. 18. August 2008
    AW: Simple BBCode Klasse

    PHP:
    <? php
        
    function  handleYoutubeBBcode ( $url ) {
            if(
    substr ( $url 0 7 ) ==  'http://' ) {
                
    $stack  = array();
                
    preg_match ( '~.*watch?v=(\w+)&.*~' $url $stack );
                if(empty(
    $stack [ 1 ])) return  '' ;
                
    $watch  $stack [ 1 ];  //\w kann nur a-zA-Z0-9_. sein, kein risiko
            
    } else {
                
    $watch  preg_replace ( '~\W+~' '' $url );
                if(empty(
    $watch )) return  '' ;
            }
            
            
    $bbcode  '<object width="425" height="344">'  .
                
    '<param name="movie" value="http://www.youtube.com/v/'  $watch  '&hl=en&fs=1"></param>'  .
                
    '<param name="allowFullScreen" value="true"></param>'  .
                
    '<embed src="http://www.youtube.com/v/'  $watch  '&hl=en&fs=1" '  .
                
    'type="application/x-shockwave-flash" allowfullscreen="true" width="425" '  .
                
    'height="344"></embed>'  .
                
    '</object>' ;
        }
        
        function 
    handleListBBcode ( $list ) {
            
    $bbcode  '<ul>' ;
            foreach(
    explode ( '[*]' $list ) as  $item )
                
    $bbcode  .=  '<li>'  $item  '</li>' ;
            return 
    $bbcode  '</ul>' ;
        }

        
    $bbcodes  = array(
            
    'b'  => array(
                
    'find'  =>  '\[b\](.*)\[/b\]' ,
                
    'replace'  =>  '<strong>$1</strong>'
            
    ),
            
            
    'i'  => array(
                
    'find'  =>  '\[i\](.*)\[/i\]' ,
                
    'replace'  =>  '<em>$1</em>'
            
    ),
            
            
    'u'  => array(
                
    'find'  =>  '\[u\](.*)\[/u\]' ,
                
    'replace'  =>  '<u>$1</u>'
            
    ),
            
            
    'img'  => array(
                
    'find'  =>  '\[img\](.*)\[/img\]' ,
                
    'eval'  =>  '"<img src=\"" . htmlentities(\'\\1\', ENT_COMPAT) . "\" border=\"0\">"'
            
    ),
            
            
    'list'  => array(
                
    'find'  =>  '\[list\](.*)\[/list\]' ,
                
    'eval'  =>  'handleListBBcode(\'\\1\')'
            
    ),
            
            
    'youtube'  => array(
                
    'find'  =>  '\[youtube\](.*)\[/youtube\]' ,
                
    'eval'  =>  'handleYoutubeBBcode(\'\\1\')'
            
    )
        );
        
        foreach(
    $bbcodes  as  $bbcode ) {
            while(
    preg_match ( '~'  $bbcode [ 'find' ] .  '~U' $content )) {
                if(isset(
    $bbcode [ 'eval' ])
                    
    $content  preg_replace ( '~'  $bbcode [ 'find' ] .  '~Ue' $bbcode [ 'eval' ],  $content );
                else 
    $content  preg_replace ( '~'  $bbcode [ 'find' ] .  '~U' $bbcode [ 'replace' ],  $content );
            }
        }
    ?>
    ungetestet.
     
  11. 18. August 2008
    AW: Simple BBCode Klasse

    Erstmal Danke an alle.

    2. Ehm Murdoc, vielen Dank dafür aber wie baue ich die nun ein?

    Einfach
    $Result = handleYoutubeBBcode($text);
    $Result = handleListBBcode($text);
    reinschreiben?


    EDIT:// Parse error: syntax error, unexpected T_VARIABLE in /mnt/web5/41/36/51633336/htdocs/joel/bbcode1.php on line 64

    Line 64: $content = preg_replace('~' . $bbcode['find'] . '~Ue', $bbcode['eval'], $content);
     
  12. 18. August 2008
    AW: Simple BBCode Klasse

    PHP:
      if(isset( $bbcode [ 'eval' ])
    ersetzen mit
    PHP:
      if(isset( $bbcode [ 'eval' ]))
    benutzen kannst du es so:
    definiere eine variable mit dem namen $content, woe der inhalt mit den bbcodes drinnen is, bind mein script ein => fertig. danach is in $content der fertige html-text
     
  13. 18. August 2008
    AW: Simple BBCode Klasse

    Ok, vielen Dank ! Bewertungen an alle sind raus.

    Close
     
  14. 19. August 2008
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Simple BBCode Klasse

    habs mal verbessert, jetzt funktionierts auch

    PHP:
    <? php
        
    class  SimpleBBCode  {
            protected 
    $bbcodes  = array();
            
            public function 
    __construct () {
                
    //standard bbcodes hinzufügen
                
    $this -> assign ( '\[b\](.*)\[/b\]' '<strong>$1</strong>' );
                
    $this -> assign ( '\[i\](.*)\[/i\]' '<em>$1</em>' );
                
    $this -> assign ( '\[u\](.*)\[/u\]' '<u>$1</u>' );
                
    $this -> assign ( '\[img\](.*)\[/img\]' '"<img src=\"" . htmlentities(\'\\1\', ENT_COMPAT) . "\" border=\"0\">"' true );
                
    $this -> assign ( '\[list\](?s)(.*)\[/list\]' '$this->handleListBBcode(\'\\1\')' true );
                
    $this -> assign ( '\[youtube\](.*)\[/youtube\]' '$this->handleYoutubeBBcode(\'\\1\')' true );
            }
            
            public function 
    parse ( $content ) {
                if(!
    count ( $this -> bbcodes )) return  $content ;
            
                foreach(
    $this -> bbcodes  as  $bbcode ) {
                    while(
    preg_match ( '~'  $bbcode [ 'find' ] .  '~U' $content )) {
                        if(isset(
    $bbcode [ 'eval' ]))
                            
    $content  preg_replace ( '~'  $bbcode [ 'find' ] .  '~Ue' $bbcode [ 'eval' ],  $content );
                        else 
    $content  preg_replace ( '~'  $bbcode [ 'find' ] .  '~U' $bbcode [ 'replace' ],  $content );
                    }
                }
                
                return 
    $content ;
            }
            
            public function 
    assign ( $find $replace $eval  false ) {
                
    $pattern  = array( 'find'  =>  $find );
                
    $pattern [(( $eval  ===  true ) ?  'eval'  'replace' )] =  $replace ;
                
    $this -> bbcodes [] =  $pattern ;
            }
            
            protected function 
    handleYoutubeBBcode ( $url ) {
                if(
    substr ( $url 0 7 ) ==  'http://' ) {
                    
    $stack  = array();
                    
    preg_match ( '~.*watch?v=(\w+)&.*~' $url $stack );
                    if(empty(
    $stack [ 1 ])) return  '' ;
                    
    $watch  $stack [ 1 ];  //\w kann nur a-zA-Z0-9_. sein, kein risiko
                
    } else {
                    
    $watch  preg_replace ( '~\W+~' '' $url );
                    if(empty(
    $watch )) return  '' ;
                }
                
               return 
    '<object width="425" height="344">'  .
                    
    '<param name="movie" value="http://www.youtube.com/v/'  $watch  '&hl=en&fs=1"></param>'  .
                    
    '<param name="allowFullScreen" value="true"></param>'  .
                    
    '<embed src="http://www.youtube.com/v/'  $watch  '&hl=en&fs=1" '  .
                    
    'type="application/x-shockwave-flash" allowfullscreen="true" width="425" '  .
                    
    'height="344"></embed>'  .
                    
    '</object>' ;
            }
            
            protected function 
    handleListBBcode ( $list ) {
                
    $bbcode  '<ul>' ;
                foreach(
    explode ( '[*]' $list ) as  $item ) {
                    if(empty(
    $item )) continue;
                    
    $bbcode  .=  '<li>'  $item  '</li>' ;
                }
                return 
    $bbcode  '</ul>' ;
            }
        };
        
        
    $bbcode  = new  SimpleBBCode ;
        print 
    $bbcode -> parse ( '{bild-down: https://www.xup.in/000/board.raidrush.ws/a_rr_style/misc/head_01.gif}
    '
    );
    ?> 
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.