• Super User

    Grazie thedarkita 😄

    la parte relativa alla formattazzione del testo funziona. Però ho dei problemi con gli smilies 😞 Ad esempio basta che io nel testo inserisca una 'S', che lo interpreta come [:S] e lo traduca nella corrispondente immagine.

    Ad esempio mettendo [:D]

    Il risultato è l'equivalente di:

    [:):D]

    Possibili soluzioni? :mmm:
    max

    PS: Credo (basato esclusivamente su un'opinione personale) che allo script basti UN elemento in comune (eg: in [:S] basta che trovi una 'S' perchè converta l'immagine). Cosa ne pensi?


  • ModSenior

    A via di mettere / e \ sto impazzendo. 😄
    Un paio li ho sistemati, gli altri sto impazzendo... Fai prima a fare un str_replace per le faccine invece che fare le espressioni regolari inutilmente secondo me.

    [php]
    function bbcode_format($var) {
    $search = array(
    "/[b](.?)[/b]/is",
    "/[i](.
    ?)[/i]/is",
    "/[u](.?)[/u]/is",
    "/[img](.
    ?)[/img]/is",
    "/[url](.?)[/url]/is",
    '/\n/',
    "/[:)]/",
    "/[\O:)]/",
    "/[:@]/",
    "/[:S]/",
    "/[:
    ]/",
    "/[\£:)]/",
    "/[:$]/",
    "/[:O]/",
    "/[;)]/",
    "/[:(]/"
    );
    $replace = array(
    '<strong>$1</strong>',
    "<em>$1</em>",
    "<u>$1</u>",
    '<img src="$1" />',
    '<a href="$1">$1</a>',
    '<br />',
    '<img src="img/smile/smile1.gif">',
    '<img src="img/smile/smile2.gif">',
    '<img src="img/smile/smile3.gif">',
    '<img src="img/smile/smile4.gif">',
    '<img src="img/smile/smile5.gif">',
    '<img src="img/smile/smile6.gif">',
    '<img src="img/smile/smile7.gif">',
    '<img src="img/smile/smile8.gif">',
    '<img src="img/smile/smile9.gif">',
    '<img src="img/smile/smile10.gif">'
    );
    $var = preg_replace($search, $replace, $var);
    return $var;
    }
    [/php]


  • Super User

    Grazie mille 😄


  • ModSenior

    Vedi che mancano 4 faccine però...
    Perchè una non sono riuscito a farla andare.
    Ti consiglio comunque di fare un str_replace per le faccine, che sicuramente è molto più comodo.


  • Super User

    Si ho usato uno str_replace e funziona 😄

    Ho ancora un dubbio... in pratica avrei bisogno che continuasse la ricerca di bbcode da rimpiazzare anche all'interno degli stessi... esempio:

    
    [table] [table] [/table] [/table]
    
    ```dove il codice '[table]' è (per esempio):
    
    

    <table border="1">
    <tr>
    <td>

    </td>
    </tr>
    </table>

    
    

    <table border="1">
    <tr>
    <td>
    [table][/table]
    </td>
    </tr>
    </table>
    [/table]

    
    mentre io vorrei che fosse
    
    

    <table border="1">
    <tr>
    <td>

    <table border="1">
    <tr>
    <td>
    </td>
    </tr>
    </table>

    </td>
    </tr>
    </table>


  • ModSenior

    Il problema è che considera sempre la prima apertura e la prima chiusura che trova...
    Non mi viene niente in mente... :mmm:


  • Super User

    Il codice in questione:

    [php]
    "/[premsg](.*?)[/premsg]/is"
    [/php][php]
    '<table border="1" STYLE="border-style:none; font-size:12px" width="700"><tr bgcolor="FFCC99"><td>$1</td></tr></table>'
    [/php]eppure ci sono numerosi forum e cms che fanno uso di questo sistema di "tabella in tabella" per segnalare (ad esempio) quote di quote... mmh... :mmm:

    PS:

    Esempio di codice risultante da uso di [premsg] testo [premsg] altro testo[/premsg][/premsg]:

    
    <br /><table border="1" STYLE="border-style:none; font-size:12px" width="700"><tr bgcolor="FFCC99"><td>
    <br />____________________
    <br />max0005 wrote:
    <br />
    <br />sdfdddssd
    <br />
    <br />[premsg]
    <br />____________________
    <br />max0005 wrote:
    <br />
    <br />gaaamesgaaames</td></tr></table>[/premsg]
    
    

  • ModSenior

    Cosi dovrebbe andare:
    [php]
    <?php

    function bbcode_format($var) {
    $search = array(
    "/[b](.?)[/b]/is",
    "/[i](.
    ?)[/i]/is",
    "/[u](.?)[/u]/is",
    "/[img](.
    ?)[/img]/is",
    "/[url](.*?)[/url]/is",
    '/\n/'
    );
    $replace = array(
    '<strong>$1</strong>',
    "<em>$1</em>",
    "<u>$1</u>",
    '<img src="$1" />',
    '<a href="$1">$1</a>',
    '<br />'
    );

     while(preg_match("#[table](.*?)[\/table]#is", $var)!=0)
         $var = preg_replace("#[table](.*?)[\/table]#is", '<table>$1</table>', $var);
     $var = preg_replace($search, $replace, $var);
     return $var;
    

    }
    ?>
    [/php]


  • Super User

    Funziona!!! 😄

    Non so davvero come ringraziarti ci avrei passato la notte! :yuppi:


  • ModSenior

    😉