Visualizzazione dei risultati da 1 a 5 su 5

Discussione: problema bbcode

  1. #1
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128

    problema bbcode

    utilizzo questa funzioncina per i bbcode

    codice:
    function bbcode($testo) {
    
    $bb_prima = @array(
    '/\[quote\](.*?)\[\/quote\]/is'
    );
    
    $bb_dopo = @array(
    '<div class="bbcode-quote">$1</div>'
    );
     
    $testo = nl2br(preg_replace($bb_prima, $bb_dopo, $testo)); 
    
    return $testo;
    
    }
    il mio problema è che, se faccio semplicemente

    codice:
    [ quote ] prova quote [ / quote ]
    funziona benissimo.. però se faccio un doppio bbcode tipo questo

    codice:
    [ quote ] prova quote [ quote ] prova doppio quote [ / quote ][ / quote ]
    così non fa.. cioè stampa così

    <div class="bbcode-quote">prova quote[ quote ]prova doppio bbcode[ / quote ]</div>

    cioè nn mi stampa il doppio quote.. come mai?

  2. #2

  3. #3
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    765
    dovresti usare qualcosa tipo:
    codice:
    while (preg_match("/\[quote(.*?)\](.*?)\[\/quote\]/si", $testo)){
          $msg = preg_replace_callback("/\[quote(.*?)\](.*?)\[\/quote\]/si",'parse_quote',$testo);
    }
    Codice PHP:
    function parse_quote($matches){
          
    //funzione per creare l'impaginazione

    eXvision

  4. #4
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    cioè?... o altre soluzioni?

  5. #5
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    come può sembrare come metodo ? funzionare funziona xD...

    codice:
    function bbcode_quote ($str) {  
        //aggiungo classe per quote
        $open = '<div class="bbcode-quote">';  
        $close = '</div>';  
      
        //conto i tag di apertura
        preg_match_all ('/\[quote\]/i', $str, $matches);  
        $opentags = count($matches['0']);  
      
        //conto i tag di chiusura  
        preg_match_all ('/\[\/quote\]/i', $str, $matches);  
        $closetags = count($matches['0']);  
      
        //controllo che i tag siano stati chiusi tutti
        $unclosed = $opentags - $closetags;  
        for ($i = 0; $i < $unclosed; $i++) {  
            $str .= '</div>';  
        }  
      
        //sostituisco bbcode con classe
        $str = str_replace ('[' . 'quote]', $open, $str);  
        $str = str_replace ('[/' . 'quote]', $close, $str);  
      
        return $str;  
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.