Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Replace per <ul>

  1. #1

    Replace per <ul>

    ciao,

    per poter scrivere come su questo forum un elenco puntato in questo modo :

    • voce1
    • voce2
    • vocen


    Utilizzando quesa sintassi :

    codice:
    [ list]
    [ *]voce1
    [ *]voce2
    [ *]vocen
    [ /list]
    Senza spazi naturalemnte.

    Ho pensato di fare un replace a 'list' con <ul /> e a[*] con <li />.

    E fin qua ok ... ma il fatto è che utilizzando sulla stessa variabile su cui faccio il replace nl2br(); che mi trasforma gli /n in
    ottengo un codice così in output :

    codice:
    <ul>
    [*]voce1
    [*]voce2
    [*]vocen
    [/list]
    E quindi l'elenco diventa troppo alto con troppi spazi ... come posso evitare questo ?

    Grazie

  2. #2
    Ripassando la variabile ad una funzione che elimini


    Hai fatto il replace degli altri "tag" quindi è inutile che ti spieghi come fare!

  3. #3
    altrimenti evita la funzione nl2br()

  4. #4
    Devo metterla, perchè lavoro su una variabile che prende via POST il contenuto di una textarea.

    Per quanto riguarda la prima risposta, devo fare una funzione saparata per togliere solo al [ list] i
    ?

  5. #5
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    codice:
    $stringa = preg_replace('/<br \/>/','',$stringa);



    think simple think ringo

  6. #6
    Ok ... ma io ho una funzione 'formatta()' che appunto formatta il testo prima di mostrarlo a video.

    A me serve il replace dei /n con i
    , solo che li vorrei evitare tra [ list] e [/ list].

    Con il replace come mi ha detto faccio il replace su tutta la variabile $stringa, su cui prima ho lavorato per fare il contrario ... o sbaglio ?

    Sarei quindi nella situazione iniziale.

  7. #7
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858


    prova così:
    codice:
    $pattern = array('/<\/li><br \/>/', '/<ul><br \/>/', '/<\/ul><br \/>/');
    $replace = array('', '<ul>', '[/list]');
    $stringa = preg_replace($pattern, $replace, $stringa);
    think simple think ringo

  8. #8
    L'ultima soluzione di marketto era quella che ti volevo suggerire ma che non sapevo come applicare!

    In pratica elimini i tag
    solo tra i tag <list></list>.
    Un po' come fanno i template engine quando utilizzi i loro tag specifici anche se qui è molto più semplice la cosa!

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