bbcode

Ciao,

ciao sto scrivendo un bbcode per un forum, e sono arrivato qui:

<?php 
function bbcode_format ($str) { 
    $str = htmlentities($str); 

    $simple_search = array( 
                '/\[b\](.*?)\[\/b\]/is',                                 
                '/\[i\](.*?)\[\/i\]/is',                                 
                '/\[u\](.*?)\[\/u\]/is',                                 
                '/\[url\=(.*?)\](.*?)\[\/url\]/is',                          
                '/\[url\](.*?)\[\/url\]/is',                              
                '/\[align\=(left|center|right)\](.*?)\[\/align\]/is',     
                '/\[img\](.*?)\[\/img\]/is',                             
                '/\[mail\=(.*?)\](.*?)\[\/mail\]/is',                     
                '/\[mail\](.*?)\[\/mail\]/is',                             
                '/\[font\=(.*?)\](.*?)\[\/font\]/is',                     
                '/\[size\=(.*?)\](.*?)\[\/size\]/is',                     
                '/\[color\=(.*?)\](.*?)\[\/color\]/is',         
                ); 

    $simple_replace = array( 
                '<strong>$1</strong>', 
                '<em>$1</em>', 
                '<u>$1</u>', 
                '<a href="$1">$2</a>', 
                '<a href="$1">$1</a>', 
                '<div style="text-align: $1;">$2</div>', 
                '<img src="$1" />', 
                '<a href="mailto:$1">$2</a>', 
                '<a href="mailto:$1">$1</a>', 
                '<span style="font-family: $1;">$2</span>', 
                '<span style="font-size: $1;">$2</span>', 
                '<span style="color: $1;">$2</span>', 
                ); 

    // Do simple BBCode's 
    $str = preg_replace ($simple_search, $simple_replace, $str); 

    // Do <blockquote> BBCode 
    $str = bbcode_quote ($str); 

    return $str; 
} 



function bbcode_quote ($str) { 
    $open = '<blockquote>'; 
    $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); 

    return $str; 
} 
?>

vorrei implementarlo con la possibbilità di inserire il comando code per postare il codice e vorrei che al testo mi riconoscesse gli accapo e i link nel caso non li inserisco tramite bbcode....

potreste aiutarmi completando il codice??

inviato 10 anni fa
alessio
X 0 X

gli "a capo" si convertono in <br /> con la funzione nl2br, la colorazione del codice invece con highlight_string

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

gentilmente potresti ripostare il codice con queste modifiche....

 ::)

Grazie

risposto 10 anni fa
alessio
X 0 X

$stringa_con_acapo = nl2br($stringa_messaggio_da_verificare) è una cosa che si fa dopo che hai verificato il BBCode.

Ma perché non ti cerchi una libreria di BBCode già pronta, ce ne sono parecchie, così eviti di reinventare la ruota.

risposto 10 anni fa
Marco Grazia
X 0 X

e dove la trovo una già pronta ho provato a cercare

risposto 10 anni fa
alessio
X 0 X
e dove la trovo una già pronta ho provato a cercare

Hai visto anche su www.sourceforge.org?

http://sourceforge.net/search/?words=bbcode&type_of_search=soft attento devi cercare attentamente tra le varie implementazioni e il sitone è molto lento.

risposto 10 anni fa
Marco Grazia
X 0 X

ho provato a cercare ma quelli che ho trovato hanno le stesse funzioni di quello che ho postato io...

A me serve leggermente implementato...

risposto 10 anni fa
alessio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda