• Bannato User Attivo

    Come trasformare gli enter in </p><p>

    Se faccio inserire una recensione agli utenti del mio sito, per far andare a capo, ovvero per trasformare il loro "invio" in un <br> uso questa funzione:

    $review_news = nl2br($review_news);
    

    Come posso sostituire gli "invio" con fine ed inizio paragrafo?
    Perchè è più bello da leggere un testo duddisvio per paragrafi con un po' di spazio tra di loro.

    Spiegato mi sono?
    Grazie.


  • Moderatore

    Intercetti il carattere di fine riga e lo sostituisci con un str_replace().
    Attenzione che tale carattere cambia nei sistemi win, linux e mac.

    Se fai una ricerca su google trovi moltissimo materiale 🙂


  • Super User

    [url=http://it.php.net/manual/it/function.nl2br.php#60381]PHP: nl2br - Manual

    [url=http://www.php-editors.com/contest/1/51-read.html]PHP Editor Review - PHP Functions : Formatting text for XHTML using nl2p function

    :ciauz:


  • Bannato User Attivo

    E sapete che mi è venuto in mente?
    Perchè non fare così:
    una volta trasformato il carattere di fine riga in <br> non riapplico un cambio di stringa cambiando il <br> in </p><p> ?

    Sarebbe un doppio cambio di stringa fatto in successione e penso che non ci sarebbero problemi, o sbaglio?

    Grazie come sempre!


  • Moderatore

    Non ti conviene per due motivi:

    1. fai fare più lavoro al pc
    2. se hai bisogno di mettere un <br> come fai?

    Potresti usare questa, dal manuale di php

    
    <?php
    function nl2p($text) {
      return "<p>" . str_replace(array("\r\n", "\n", "\r"), "</p><p>", $text) . "</p>";
    }
    ?>
    

    :ciauz:


  • Bannato User Attivo

    @massy said:

    Potresti usare questa, dal manuale di php

    
    <?php
    function nl2p($text) {
     return "<p>" . str_replace(array("\r\n", "\n", "\r"), "</p><p>", $text) . "</p>";
    }
    ?>
    

    :ciauz:Una prima domanda:
    che differenza c'è rispetto a questa?

    function nl2p($text) {
    	  return "<p>" . str_replace("\n", "</p><p>", $text) . "</p>";}
    

    Seconda domanda.
    Se uno mi mette un doppio a capo mi trovo dei paragrafi vuoti che non vengono visualizzati con riga vuota. Mi trovo il codice html così:
    <p></p>

    io lo volevo riempire con uno spazio bianco ed ho applicato un cambiamento di stringa:

    $news_text = str_replace("<p></p>","<p>&nbsp;</p>", $news_text);
    

    ma NON mi funziona e non capisco dove sta l'errore.

    Se metto a posto questi ultimi due particolari poi vi posto il codice completo che potrà essere utile per tutti.


  • Bannato User Attivo

    Cambio di rotta. La paginazione "bella da leggere" la faccio coi css. Mi serve una funzione inversa. Ovvero devo togliere i <p></p> vuoti.

    Ecco come ho fatto:
    $news_text = str_replace("</p><p></p><p>","</p><p>", $news_text);

    Ma non mi vaaaaa :(((((
    Ecco il codice html:

    </p><p>a capo
    </p><p>
    </p><p>doppio spazio
    </p><p>
    </p><p>
    </p><p>triplo spazio
    </p><p>
    
    

    Ci sono gli a capo nel codice html che danno problemi?


  • User Attivo

    Suggerimento: carica i testi in un array (una riga=un elemento dell'array)
    e poi fai
    echo "<p>".implode("</p><p>", $array)."</p>");
    e ti ritrovi senza tag di troppo nel codice.