Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35
  1. #1
    Utente di HTML.it L'avatar di Yuppies
    Registrato dal
    Apr 2007
    Messaggi
    355

    limitare il numero di caratteri mostrati mantenendo la formattazione grassetto e cors

    Buon pomeriggio a tutti.
    Mi aiutate a risolvere un problema con una funzione?

    Quello che dovrei ottenere è qualcosa di molto simile al funzionamento di questo forum ma con una difficoltà aggiunta che non riesco a superare.

    Allora espongo la questione:

    In una textarea (proprio come questa in cui sto scrivendo) un utente inserisce del testo (si tratta di una descrizione relativa ad un eventuale servizio in offerta) subito dopo invia il form.

    Il testo viene archiviato in un db e poi al momento opportuno estratto e mostrato nella pagina principale del sito nella giusta posizione.

    Fin qui tutto ok

    Vorrei dare all'utente la possibilità di impostare solo pochi tag per formattare il testo per esempio in grassetto, dovrebbe scrivere [g]xxxxx[/g] e per corsivo scriverebbe [c]xxxx[/c]

    ed anche fin qui tutto ok

    Purtroppo, siccome lo spazio a disposizione, dove mostrare l'offerta è limitato, ho utilizzato una funzione che rimuove tutti i vari "tag" impostati nel testo, faccio contare il numero dei caratteri rimanenti e ne limito la quantità ad un certo numero.

    Purtroppo però supponendo che un utente abbia scritto qualcosa di simile:
    "[g]Offerta promozionale[/g]
    nel nostro centro dal
    [c]23.02.2011 al 28.02.2011[/c]"

    e che io abbia limitato il numero di caratteri consentiti a 50, per cui poi verrebbero aggiunti i soliti puntini sospensivi, lo pseudo tag [c] resterebbe aperto scombussolando l'intera formattazione del sito.

    Qualcuno può aiutarmi a risolvere questo problema?

  2. #2
    tutto ciò che c'è oltre il 50 carattere non lo stampi e inserisci [/c]

  3. #3
    Utente di HTML.it L'avatar di Yuppies
    Registrato dal
    Apr 2007
    Messaggi
    355
    ottimo suggerimento il tuo ma...
    potrebbe capitare che l'ultimo pseudo-tag inserito dall'utente non sia [c] ma magari [g].

    Come posso fare per rilevare l'ultimo pseudo-tag che l'utente ha utilizzato?

    stavo provando di utilizzare un array dove memorizzo la sequenza dei pseudo-tag ma non riesco a rilevarli.

    qualche aiuto?

  4. #4
    cerca l'ultimo [ controlla che lettera contiene e dopo il 50esimo carattere inserisci [/ +l'ultima parte del tag aperto

    es
    [g]ciao

    cerchi [
    il carrattere successivo è una g

    il tag di chiusura sarà [/ + g] ovvero [/g]

  5. #5
    comunque non starei a farmi tutti sti problemi per la chiusura del tag
    sostituisci tutti i tag con il relativo html e prima di inserire i 3 puntini inserisci tutti i tag di chiusura previsti
    non è corretto ma funziona guarda questo esempio ^_^

    codice:
    <body>
    ciao come va?[/i]...
    </body>

  6. #6
    Utente di HTML.it L'avatar di Yuppies
    Registrato dal
    Apr 2007
    Messaggi
    355
    grazie Grambo per il tuo aiuto

    l'ultima ipotesi che mi proponi purtroppo non va in quanto prima di tutto il codice ci sono altri tag aperti e quindi chiudendo alla rinfusa chiudo i tag precedenti e la struttura del sito salta totalmente.

    Opterei per seguire il tuo precedente suggerimento ovvero

    "cerca l'ultimo [ controlla che lettera contiene e dopo il 50esimo carattere inserisci [/ +l'ultima parte del tag aperto
    es
    [g]ciao
    cerchi [
    il carrattere successivo è una g
    il tag di chiusura sarà [/ + g] ovvero [/g]"

    ma lo seguirei se capissi cosa intendi per " cerca l'ultimo [ controlla che l ...." non capisco come posso fare per cercare l'ultimo tu hai una funzione da suggerirmi?

    grazie

  7. #7
    pensavo ad una split per controllare che i [ siano pari o dispari se sono dispari 1 non è stato chiuso ma ilproblema è che i tag non chiusi potrebbero essere più di 1...quindi sto pensando ad una soluzione valida

  8. #8
    io adotterei (e in realtà lo faccio in un mio applicativo) una soluzione radicale: no tag nell'abstract

  9. #9
    una potrebbe essere (è lunga da spiegare e spero di essere chiaro)

    tag=""

    testo="ciao [ b][g]come[/g] va[c]?"

    cerco il primo "["
    usando instr() risultato 6

    quindi stampi i primi 5 caratteri ovvero "ciao "
    poi al testo togli i primi 5 caratteri con

    testo=right(testo,len(testo)-5) ovvero "[b][g]come[/g] va[c]?"

    ora controlli il valore del 2 carattere (sai che il primo è un [)
    se è un "/" segni l'errore
    altrimenti avrai il tag aperto

    e cerchi il relativo tag di chiusura (in questo caso non esiste)
    se non esiste a tag=il tag di chiusura (tag="[/ b]")
    e stampi il relativo tag html aperto

    ora elimini i primi 3 caratteri come fatto in precedenza con la funzione right()
    avrai

    "[g]come[/g] va[c]?"
    rifai il procedimento e quando cercherai il relativo tag di chiusura (usandio instr() )lo trovi e avrai come risultato 8

    quindi dovrai prendere il testo contenuto tra il 4 (i primi 3 sono del tag di apertura) e il 7 (all'8 inizia il tag di chiusura)
    e lo stampi con i relativi tag html

    ora elimini i caratteri stampati + i caratteri di apertura e chiusura tag (rispettivamente 3 e 4) quindi in totale 11 caratteri (funzione right() )
    ti rimarrà
    " va[c]?"

    cerchi nuovamente il carattere [ il valore dell'instr() sarà 4
    quindi stampi i primi 3 caratteri a video
    e li elimini dalla variabile

    "[c]?"
    solito procedimento
    cerchi il tag di chiusura che non ci sarà
    quindi alla variabile tag aggiungi il tag di chiusura mancante e avrai tag="[/ b],[/c]"

    stampi a video il tag html relativo ed elimini i 3 caratteri dalla variabile testo

    ti rimane
    "?"

    eseguendo il solito procedimento stampi a video
    ?

    son finiti i caratteri da controllare
    quindi
    splitti la variabile tag e per ogni tag di chiusura stampi il relativo tag html
    infine i tre puntini

    O.o che macello

  10. #10
    Utente di HTML.it L'avatar di Yuppies
    Registrato dal
    Apr 2007
    Messaggi
    355
    Grazie Grambo

    concordo con la tua ultima affermazione "che macello"

    però ad occhio mi sembra una buona intuizione la tua.

    Mi metto a lavoro per realizzare la funzione e speriamo bene

    1000 grazie

    La soluzione di Optime mi sembra un po troppo drastica però rapida per chi non vuole smanettare con il codice.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.