Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828

    [php] tagliare stringa lunga

    Salve,
    i miei utenti possono scrivere dei messaggi e a volte capita che alcuni inseriscano un messaggio tipo ciaooooooooooooooooooooooooooooooooooooooooooooooo oooooooooooooooooooooooooooo
    che sfasa la struttura della pagina. c'è un modo per tagliare la singola parola nel caso in cui sia troppo lunga?

  2. #2
    qualche espressione regolare o tokenizzi il testo e per ogni token verifichi la lunghezza e eventualmente tagli

  3. #3
    Utente di HTML.it L'avatar di M4rko
    Registrato dal
    Dec 2000
    Messaggi
    619
    Vai con wordwrap() impostando il quarto parametro a true (altrimenti il wrap funziona solo in corrispondenza dello spazio, ossia tra una parola e l'altra)

    http://it.php.net/wordwrap
    Tutti hanno bisogno di credere in qualcosa.
    Io credo che mi farò un'altra birra.


  4. #4
    ah era per non sfasare la pagina..l'ultima frase non l'aveva letta :maLOL:


  5. #5
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828
    Originariamente inviato da M4rko
    Vai con wordwrap() impostando il quarto parametro a true (altrimenti il wrap funziona solo in corrispondenza dello spazio, ossia tra una parola e l'altra)

    http://it.php.net/wordwrap


    ho inserito questo
    $row[testo] = wordwrap($row[testo], 60, "
    ", 1);

    però così facendo nel caso di una scritta normale lui mi và a capo al 60 carattere invece io vorrei che lui mi và a capo solo se una delle parole nella stringa è piu lunga di 60 caratteri. come posso fare?

  6. #6
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828
    up

  7. #7
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828
    up

  8. #8
    Codice PHP:
    function textWrap ($text$length$break=" ") {
       
    $pure=strip_tags($text);
       
    $words=str_word_count($pure1);
       foreach (
    $words as $word) {
           if (
    strlen($word) > $length) {
               
    $newword=wordwrap($word$length$breakTRUE);
               
    $text=str_replace($word$newword$text);
           }
       }
       return 
    $text;


    io ho trovato questa soluzione su php.net!
    prova!
    ciau!

  9. #9
    Utente di HTML.it L'avatar di Gabbro
    Registrato dal
    Nov 2000
    Messaggi
    828
    Originariamente inviato da k_abuto
    Codice PHP:
    function textWrap ($text$length$break=" ") {
       
    $pure=strip_tags($text);
       
    $words=str_word_count($pure1);
       foreach (
    $words as $word) {
           if (
    strlen($word) > $length) {
               
    $newword=wordwrap($word$length$breakTRUE);
               
    $text=str_replace($word$newword$text);
           }
       }
       return 
    $text;


    io ho trovato questa soluzione su php.net!
    prova!
    ciau!
    ciao grazie mille risolto!

  10. #10
    aaaaaaaaaaaa discusssione di DUE ANNI FA! (non uccidetemiiii -super smile-)

    grazie a google code ho trovato due funzioni simili, una che usa le regex (giusto?) e l'altra no, anche se mi sembra una modifica di quella segnalata precedentemente su php.net

    secondo voi -perché io non ci capisco nulla- quale delle tre soluzioni è migliore (più veloce intendo) e che non mi tagli i char html? (& e compagnia ad esempio..)

    Codice PHP:
      function textwrap($text$width=75) {
       if (
    $text) return preg_replace("/([^\n\r ?&\.\/<>\"\\-]{".$width."})/i"," \\1\n",$text);
      } 
    Codice PHP:
       function textwrap($text$wrap=80$break='
    \n'
    ){
                    
    $len strlen($text);
                    if (
    $len $wrap){
                            
    $h '';
                            
    $lastWhite 0;
                            
    $lastChar 0;
                            
    $lastBreak 0;
                            while (
    $lastChar $len){
                                    
    $char substr($text$lastChar1);
                                    if ((
    $lastChar $lastBreak $wrap) && ($lastWhite $lastBreak)){
                                            
    $h .= substr($text$lastBreak, ($lastWhite $lastBreak)) . "$break";
                                            
    $lastChar $lastWhite 1;
                                            
    $lastBreak $lastChar;
                                    }
                                    
    /* You may wish to include other characters as valid whitespace... */
                                    
    if ($char == ' ' || $char == chr(13) || $char == chr(10)){
                                            
    $lastWhite $lastChar;
                                    }
                                    
    $lastChar $lastChar 1;
                            }
                            
    $h .= substr($text$lastBreak);
                    }
                    else{
                            
    $h $text;
                    }
                    return 
    $h;
            } 
    «Non so perchè perchè l'ho fatto, non so perchè mi sono divertito a farlo e non so perchè lo farò di nuovo..» Bart Simpson
    Sie Sciopai Official Web Site

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.