Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di zoom
    Registrato dal
    Dec 2001
    Messaggi
    1,737

    Rich textarea che scrive BBCODE

    sto cercando di creare una rich TextArea che però al submit del form mi permetta di salvare nel db codice BBCODE invece che html.
    questo per compatibilità con il passato e anche per comodità mia nel caso volessi cambiare la visualizzazione di un elemento...

    ho capito la logica di base delle textarea classiche però tutte si limitano a scrivere il codice all'interno dell'iframe, nessuno si occupa anche di compilare un secondo campo contenente bbcode...
    secondo voi c'è un modo di fare questa cosa oppure devo proprio rinunciarci? :master:
    Chicco Ravaglia per sempre con noi!

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    non gestirei una seconda textarea, l' xhtml che normalmente popola la textarea e' ricavato dinamicamente dall' area wysiwyg, allo stesso modo andrebbe ricavata una versione bbcode

    fondamentalmente ti servirebbero 2 cose:
    regexp fatte bene per convertire i tag xhtml in bbcode (e, probabilmente, viceversa)
    meccanismo per rilevare la posizione del cursore e la selezione anche nella textarea
    (per applicare modifiche al testo selezionato o comunque in posizione corretta)
    che e' sicuramente molto simile, se non uguale, a quello per l' iframe

    ciao

  3. #3
    Utente di HTML.it L'avatar di zoom
    Registrato dal
    Dec 2001
    Messaggi
    1,737
    sto infatti seguendo il metodo delle regular expression in modo da sostituire il codice html in bbcode.
    ho scelto però di farlo lato server via php dopo il submit.
    ho però un problema con una regular expression

    questo codice
    /\<span style=\"(.*)font-weight: bold;(.*)\">((\s|.)+?)\<\/span>/i

    lo faccio sostituire in
    <span style="\\1\\2">[ b]\\3[ /b]</span>

    Il problema è che \\3 non ha il valore che mi aspetterei.

    Passando alla funzione
    <span style="font-weight: bold;">aaa prova <span style="font-style: italic;">prova</span></span>

    infatti mi restituisce

    <span style="">aaa prova <span style="font-style: italic;">[ b]prova</span>[ /b]</span>

    A me servirebbe che \\3 fosse
    aaa prova <span style="font-style: italic;">prova</span>
    in modo da circondarlo con i tag del grassetto.
    Cosa c'è che non va? :master:
    Chicco Ravaglia per sempre con noi!

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    Originariamente inviato da zoom
    ho scelto però di farlo lato server via php dopo il submit.
    sposto

  5. #5
    Utente di HTML.it L'avatar di zoom
    Registrato dal
    Dec 2001
    Messaggi
    1,737
    up
    Chicco Ravaglia per sempre con noi!

  6. #6
    Utente di HTML.it L'avatar di zoom
    Registrato dal
    Dec 2001
    Messaggi
    1,737
    con questa regular
    codice:
    <span style=\"(.*)font-weight: bold;([^"]*)\">((s|.)+)\<\/span>
    e questo replace
    codice:
    <span style="\1\2">[ b]\3[/ b]</span>
    applicato a
    codice:
    <span style="font-weight: bold;">asdfd<span style="font-style: italic;">saf</span>asf</span>
    ottengo correttamente
    codice:
    <span style="">[ b]asdfd<span style="font-style: italic;">saf</span>asf[ /b]</span>
    Il problema è che non sempre lo span di stile ne conterrà un altro ma potrebbe anche essere contenuto.
    Per lo span italico infatti dovrei applicare una regular di questo tipo per ottenere il risultato sperato
    [CODE]
    <span style=\"(.*)font-style: italic;([^"]*)\">((s|.)+?)\<\/span>
    [CODE]
    Come faccio a dire che la terza backreference deve essere greedy o lazy a seconda che la stessa contenga o meno un altro span? :master:
    non ce la farò mai
    Chicco Ravaglia per sempre con noi!

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.