Concettualizzazione di codice PHPBB

Scusate, il titolo può essere fuorviante, ma mi servirebbe capire se conviene inserire del codice PHPBB in una textarea, piuttosto che direttamente il giusto codice html.

Il fatto è che sto creando un form per l'inserimento dati con qualche possibilità di formattazione testo e inserimento URL.

Il concetto del phpBB è che se lo inserisco, comunque dopo devo fare la conversione che è tediosa, se non lo inserisco ma uso elementi html al suo posto, comunque devo verificare che la stringa di codice risultante dalla textarea, contenga solo il codice html consentito e non altro.

Sono propenso ad usare il codice html in luogo del phpBB, ma tutte le funzioni provate per verificare il codice inserito mi fanno un casino tremendo, quindi se qualcuno ha una funzione particolare in grado di realizzare ciò che cerco, è il benvenuto :)

Oppure ne inventiamo una insieme a beneficio di tutti, che ne pensate?

 :bye:

inviato 9 anni fa
Marco Grazia
X 0 X

a mio modo di vedere, il BBcode ( phpBB è la bullettin board ) è comodo in quanto permette di avere un controllo più rigoroso sul codice, inizialmente dai uno strip_tags() e poi parti con il vero parsing dei tag permessi...

riesci ad avere una sintassi più leggibile per i non addetti ai lavori soprattutto per quanto riguarda i vari attributi: pensa che macello di espressione regolare (argomento che mi sta tormentando non poco in questo periodo ) dovresti scrivere per estrarre i tags consentiti togliendo però gli attributi non permessi...)

ultimo ma non ultimo, basta un giro su phpclasses e trovi tantissime implementazioni del bbcode in svariati modi (quelle migliori sono state premiate quindi anche facili da trovare)

risposto 9 anni fa
Xscratch
X 0 X
a mio modo di vedere, il BBcode ( phpBB è la bullettin board )

Hai ragiione li confondo sempre, sarà perché in fondo l'hanno inventato loro.

è comodo in quanto permette di avere un controllo più rigoroso sul codice, inizialmente dai uno strip_tags() e poi parti con il vero parsing dei tag permessi...

riesci ad avere una sintassi più leggibile per i non addetti ai lavori soprattutto per quanto riguarda i vari attributi: pensa che macello di espressione regolare (argomento che mi sta tormentando non poco in questo periodo ) dovresti scrivere per estrarre i tags consentiti togliendo però gli attributi non permessi...)

ultimo ma non ultimo, basta un giro su phpclasses e trovi tantissime implementazioni del bbcode in svariati modi (quelle migliori sono state premiate quindi anche facili da trovare)

striptags ha un difetto, ovvero quella di poter inserire un solo elemento da mantenere, invece che una serie, altrimenti l'avrei già risolto questo problema.

Quanto al presunto caos nella textarea non sono d'accordo, nel senso che scrivere che so: parentesi quadra B parentesi quadra chiusa, non è diverso dallo scrivere < b >, quindi il caos secondo me non si crea.

Ma il problema l'hai definito proprio tu, ovvero cercare la funzione che crea meno problemi, e credo che la conversione BBcode -> html, non sia da preferire ad una semplice verifica dello script.

Insomma ho visto molte funzioni di conversione e tutte usano sequenze di array, francamente cercavo qualcosa di più semplice.

Al limite potrei pure realizzare una semplice funzioncina con strtr() ma proprio nell'url troverei un altro scoglio, una cosa è convertire il BBcode per testo inclinato o per il grassetto e molto peggio giocare con le ancore  :idiot:

risposto 9 anni fa
Marco Grazia
X 0 X

quello che intendo è che ad esempio se usi l'html devi anche togliere tutti gli eventi javascript (onmouseover etc...) problema che con bbcode non avresti

risposto 9 anni fa
Xscratch
X 0 X

No, ma vedi questo modulo lo deve usare solo una persona, non è un modulo pubblico.

Comunque la notte porta consiglio :D e ho pensato che più di una textarea c'è bisogno di un richtext (RTF) e ne sto cercando uno.

Vedi scrivere su un form è una cosa, si può sbagliare una formattazione e chi se ne frega :) ma su un testo che deve finire online, la formattazione deve essere rigorosa. Ora se siamo io o te a scriverci su ci riusciamo comunque, ma se è una persona che di html non ne capisce nulla si perderebbe, sia con html che con BBcode, quindi la soluzione è dargli qualcosa come il richtext che vede ciò che scrive e lo formatta col mouse.

Ne ho trovato uno nella raccolta di javascript di html.it ma è pietoso, nel senso che formatta il codice in modo schifoso, mischiando css inline a codice antico come html 2, e poi non è configurabile, tanto che la libreria javascript che formatta il tutto è in formato compresso  :tichedoff: assurdo per un codice così pietoso.

Ovviamente lo RTF da codice html, qualsiasi sia il modo di codifica usato è pur sempre html, quindi la routine di prima mi serve ora più che mai, ma sarebbe comunque qualcosa che "faccia passare" solo grassetto, italico, e url. Niente colore del testo, niente font strani, e niente immagini, quindi una roba semplice tutto sommato.

Appena lo trovo torno a vedere di sistemare la funzione PHP, così do un senso a tutto questo pensare  :D

risposto 9 anni fa
Marco Grazia
X 0 X

ah beh allora il problema non si pone...

se  è un cliente abituato a "word" allora dagli un bel http://www.fckeditor.net/ (quello che uso io di solito) l'unica pecca secondo me è il file manager, adesso ne hanno fatto uno nuovo però a pagamento.

Altrimenti c'è http://kfm.verens.com/ che è figo secondo me (ogni tanto mi dava qualche problema, però non ho ancora provato la 1.0)

altrimenti da poco c'è http://www.wymeditor.org/en/ che ha un'impostazione un po' diversa ma comunque interessante

risposto 9 anni fa
Xscratch
X 0 X

Sto provando il tinyMCE ti farò sapere

risposto 9 anni fa
Marco Grazia
X 0 X

Mi sarebbe piaciuto modificare il post precedente, ma si vede che non è possibile; allora:

TinyMCE funziona meravigliosamente bene, purtroppo essendo tutto javascript rallenta un poco l'applicazione, ma credo che questo sia inevitabile con questo tipo di applicazioni.

Dato che ancora online non c'è nulla, qui sotto ho prodotto una schermata dal mio PC

il bello di questa applicazione è che funziona su tutti i principali browser in giro con le dovute limitazioni dovute al sistema operativo (IE su MAC in primis).

Inoltre è estremamente configurabile, quella che si vede nello schermo l'ho configurata io in 10 minuti a dire tanto.

Ora le note dolenti:

  • E' localizzata in italiano, ma non tutto funziona con quella localizzazione, quindi dovrei rivederla a mano, per ora uso quella inglese
  • ci sono alcune funzionalità che sono troppo estese e che non mi servono a nulla in questa applicazione, ma che pare le devo tenere così come sono; ad esempio la gestione dei link è molto complessa e prevede anche la colorazione tramite CSS, figuriamoci se una persona digiuna di queste cose se la sa usare.
  • Il testo non ho idea di come venga formattato, ho riportato del testo tramite copia e incolla, con elementi di formattazione html nell'area di editing e la formattazione è sparita, però si vedevano gli elementi html, premuto il bottone salva la pagina si è resettata e la formattazione è andata a posto

Insomma mi devo leggere tutto il fottuto manuale (che è pure in inglese) e poi tornare a bomba, cioè scrivere la funzione in PHP che preservi alcuni elementi dello html e ne elimini altri.

 :buck:

risposto 9 anni fa
Marco Grazia
X 0 X

tinyMCE l'avevo scartato perché.....boh...non me lo ricordo...ormai da più di un anno uso sempre fckeditor.

Mi sembra più che altro per la gestione dei files, perché i clienti avevano la necessità di uploadare pdf e immagini da inserire nel testo... e il filemanager in tinyMCE se non sbaglio è a pagamento

risposto 9 anni fa
Xscratch
X 0 X

No no, funziona ed è integrato nel codice, solo io non lo voglio usare e quindi in quell'immagine non c'è.

Ed ho pure risolto il mio problema, roba da suicidarsi .... l'ho scoperto per caso guardando un esempio di codice sul manuale di tinyMCE ....

$allowedTags='<p><strong><em><u><h1><h2><h3><h4><h5><h6><img>';
$allowedTags.='<li><ol><ul><span><div><br><ins><del>';
if($_POST['elm1']!='') {
    $sHeader = '<h1>Ah, content is king.</h1>';
    $sContent = strip_tags(stripslashes($_POST['elm1']),$allowedTags);

Noti nulla?

in pratica a strip_tags() si passa un'intera stringa con i tag da preservare e fa tutto lui, il bello, è che nell'esempio online su php.net e sui libri è riportato un solo elemento come possibilità di esclusione ... chi fa gli esempi dovrebbe bere meno, e chi compra libri sul PHP anche (parlo di me ovvio).

Bene, oran on ho scuse mi tocca proprio lavorare  ::)

risposto 9 anni fa
Marco Grazia
X 0 X

se devo essere sincero mi sembrava strano che accettasse solo un parametro, solo che non avendo tempo di provare non ho voluto rischiare di dire cavolate...

però sul manuale c'è scritto:

string strip_tags ( string str [, string allowable_tags] )

string allowable_tags

quindi al plurale

risposto 9 anni fa
Xscratch
X 0 X
se devo essere sincero mi sembrava strano che accettasse solo un parametro, solo che non avendo tempo di provare non ho voluto rischiare di dire cavolate...

Pari pari come te fratello  :crazy:

 ;D

però sul manuale c'è scritto:

string strip_tags ( string str [, string allowable_tags] )

string allowable_tags

quindi al plurale

Sì infatti, ma sai come anche tu hai scritto su, rischiare in un lavoro è sempre ... un rischio  ^-^

risposto 9 anni fa
Marco Grazia
X 0 X

Ha funzionato tutto benissimo!

A beneficio dei lettori, inserisco qui la stringa di codice javascript che permette quella visualizzazione per tinyMCE:

<!-- tinyMCE -->

   <script language="javascript" type="text/javascript" src="tinymce/jscripts/tiny_mce/tiny_mce.js"></script>

   <script language="javascript" type="text/javascript">

   // Notice: The simple theme does not use all options some of them are limited to the advanced theme

   tinyMCE.init({
      theme : "advanced",
      mode : "textareas",
      plugins : "save,paste,searchreplace,advlink",
      theme_advanced_buttons1 : "|,newdocument,|,bold,italic,|,justifyleft,justifycenter,justifyright,justifyfull,|,cut,copy,paste,pastetext,pasteword,|,search,replace,|",
      theme_advanced_buttons2 : "|,bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,|,charmap,|",
      theme_advanced_buttons3 : "",
      theme_advanced_toolbar_location : "top",
      theme_advanced_toolbar_align : "left"
});

   </script>

   <!-- /tinyMCE -->
risposto 9 anni fa
Marco Grazia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda