Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    preg_replace problema case-sensitive

    ciauz a tutti...sto creando una funzione che mi converta del testo contente il bbcode e me lo formatti in html;
    utilizzo questa sintassi
    Codice PHP:
    preg_replace("/(\[b\])(.+?)(\[\/b\])/e","'[b]\\2[/b]'",$stringa); 
    così via per ogni tipo tag...
    ho tre dubbi:

    primo: questo funziona se viene inserito [b ] testo [/b ] ... ma non se viene inserito un tag in maiuscolo ad esempio [B ] testo [/b ]...qualcuno sa come potrei risolvere?

    secondo: posso fare a meno di utilizzare il modificatore /e?

    terzo: ho letto che è possibil salvare in un array le condizioni...in questo modo
    (esempio preso da php.net)
    Codice PHP:
    $string "The quick brown fox jumped over the lazy dog.";
     
    $patterns[0] = "/quick/";
    $patterns[1] = "/brown/";
    $patterns[2] = "/fox/";
     
    $replacements[2] = "bear";
    $replacements[1] = "black";
    $replacements[0] = "slow";

    ksort($patterns);
    ksort($replacements); 
    echo 
    preg_replace($patterns$replacements$string); 
    e possibile utilizzare questa sintassi anche se uso le regular expression?
    si hanno dei vantaggi come prestazioni?
    ciauz e grazie a tutti per l'aiuto...

  2. #2
    alla seconda e terza domanda sono riuscito a rispondermi...
    ho trovato sempre su php.net (http://it.php.net/preg_replace) quest'utilissimo esempio

    Codice PHP:
    <?php    
       
    function convert_bb($text) {
           
    $temp split("\n"$text);
           
           
    $bb_code[0] = '/(\[t\])(.*)(\[\/t\])/'// Notice how you have to escape each regex identifier so that it will match literally.
           
    $bb_replace[0] = '<span class="term">${2}</span>';
           
           
    $temp2 preg_replace($bb_code$bb_replace$temp);
           
    $temp2 implode("\n"$temp2);
           return 
    $temp2;
       }
       
       function 
    convert_html($text) {
           
    $temp split("\n"$text);
           
           
    $html_code[0] = '/(<span class="term">)(.*)(<\/span>)/';        
           
    $html_replace[0] = '[t]${2}[/t]';

           
    $temp2 preg_replace($html_code$html_replace$temp);
           
    $temp2 implode("\n"$temp2);
           return 
    $temp2;
       }
    ?>
    scusate...ma il codice viene modificato dal forum

    cmq nn capisco perchè effettui lo split su \n, a me funziona anche anche senza lo split nonostante il testo sia su più righe...

    però il mio primo dubbio rimane... se un utente inserisse un tag in maiuscolo... non verrebbe riconosciuto dalla funzione...
    c'è qualche modo per risolvere?

    ciauz e grazie

  3. #3
    ok...ho capito...sono riuscito a trovare dove si parlava del case sensitive... bisogna utulizzare il modificatore /i

    ho cercato di capire a cosa serva in modificatore /e ma sinceramente nn ci sono riuscito...qualcuno saprebbe darmi qualche esempio?


    ciauzzz

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.