Newsgroup: it.comp.www.php
Titolo: Spezzare testo

Ciao,
il io problema č questo:
Sul forum che ho creato č possibile postare messaggi scrivendo in una
textarea. Quando si visualizzano i messaggi si vedono in una in una tabella
ed ho notato che se l'utente ha scritto un rigo lunghissimo, come sto
facendo io adesso, non essendoci INVIO, la tabella si allarga per tutta la
lunghezza del rigo andando a capo al primo invio.
Io vorrei spezzare il testo, dove c'č uno spazio, una volta che la lunghezza
del rigo č superiore al limite da me impostato.
Mi sapete aiutare? magari con un po' di codice?
Ho provato in mille modi ma probabilmente mi perdo qualcosa per strada...
io ho fatto cosě:
grazie,
Michele
--------------------------------
Inviato via 
http://usenet.libero.it

beh, esiste nl2br()
dopo che hai compilato la text area andando a capo con il normalissimo
invio, fai passare la variabile così ottenuta in nl2br()
es. mettiamo che hai ottenuto la variabile $poesia che contiene
l'utente avrà inserito il valore
$poesia="sempre caro mi fu quest'ermo colle \n che da tanta parte \n
dell'ultimo orizzonte il guardo esclude";
i vari "\n" sono quando l'utente preme invio per andare a capo (non li
deve scrivere a mano, deve solo premere invio)
quindi puoi scrivere
$new_poesia=nl2br($poesia);
e otterrai $poesia="sempre caro mi fu quest'ermo colle <br> che da
tanta parte <br> dell'ultimo orizzonte il guardo esclude";
in alternativa puoi usare i vari ereg_replace per aggiungere un a capo
ogni 50 caratteri (o un numero che ritieni appropriato)
es.
$nuova_stringa=ereg_replace("(.{50})", "\\1\n<br>",$vecchia_stringa);
ciao
Luca


Intanto ti ringrazio per la risposta ma continuo a chiedermi, dal momento
che adesso non posso provare i tuoi consigli, ma se dico di spezzare la riga
dopo 50 caratteri e il 50esimo carattere è in mezzo ad una parola lui mi
spezza la parola col <br> le . Io vorrei evitare questo....
grazie


 spezza la parola col <br> le . Io vorrei evitare questo....
Sei sicuro che non sia un problema di html? Non e' che stai forzando la
visualizzazione del testo in una sola riga con nowrap?
Ciao
Max


Ciao,
Il problema non è nella textarea ma nella tabella dove l'utente visualizza
il messaggio. Se le righe sono superiori al limite da me impostato la cella
si allarga per tutta lunghezza del rigo.
Grazie,


 Michele
Matteo

 Michele
Sono con Max: il wrap per la textarea sarebbe
<textarea name="textfield" wrap="VALORE"></textarea>
mentre il NOWRAP (tra l'altro deprecated nell'html 4.0) di cui parla lui č
proprio sulla cella
<td nowrap>ciao ciao bambina</td>
Potrebbe esserci l'equivalente fatto con i css... insomma, o ci posti l'url
o il codice
http://www.w3.org/TR/1998/REC-html40-19980424/struct/tables.html#h-11.2.6
Ludovico Grossi

Ciao michele prova cosí ....
function taglia ($text){
$tstr = explode("[[:space:]]", $text);
  foreach ($tstr as $parola){
    $lettere_per_parola = strlen($parola)."\n";
      if ($lettere_per_parola >= 50){
    $accorciato .= ereg_replace("(.{50})", "\\1<br>", $parola);
    }
      else {
    $accorciato .= "$parola";
    }
   }
  return $accorciato;
 }
echo
taglia("iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii");

 del rigo è superiore al limite da me impostato.
echo( "<pre>". htmlspecialchars( wordwrap( $testo, 75 ) ) ."</pre>");
Ciao,
 ___ 
/_|_\  Umberto Salsi
\/_\/  
www.icosaedro.it