- Home
- Categorie
- Coding e Sistemistica
- PHP
- Mandare testo a capo in automatico
-
Ok:)
-
Devo un secondo capire come mettere le condizioni dei for o dei while, poi lo butto giù e se è ok te lo posto!
-
Ok..nel frattempo provo anche io qualcosa:)
-
Ho buttato giu questo script, mettigli magari qualche controllo in più per esempio se il testo è nulle e cose varie, però ora come ora funziona, non ridurre troppo il numero di caratteri massimi perchè potrebbe impallarsi, la cosa più importante è che lo devi provare con la lunghezza massima dei caratteri da te voluta e con molti testi per vedere se mantiene tutte le parole.
[php]
<?PHP
//La stringa
$stringa="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.";//Caratteri massimi EFFETTIVI per riga voluti $caratteri_riga=40; $caratteri_riga--; //Conto i caratteri della stringa $caratteri_totali=strlen($stringa); //Spazio $spazio=" "; $cont=0; $nuova_stringa=""; $i=$caratteri_riga; while($i<$caratteri_totali) { if(!strcmp($stringa*,$spazio))//Se si vado a capo { $nuova_stringa=$nuova_stringa.substr($stringa, $cont, $i-($caratteri_totali))."<br/>"; $cont=$i; $i=$i+$caratteri_riga; if($i>=$caratteri_totali) { $i=$i-$caratteri_riga; $i=$i-$caratteri_totali+1; $nuova_stringa=$nuova_stringa.substr($stringa,$i)."<br/>"; break; } } else { $i--; } }
echo"Ecco la stampa:<br /><br />$nuova_stringa";
?>
[/php]Spero ti vada bene!Ah, la stringa io l'ho passata direttamente, quindi togli questa e chiamala come la tua eheh, prova sennò a sostiuire il testo al mio per vedere se ti va.
-
Ciao,purtroppo mi manda la pagina in loop:?
Ho fatto cosi'
[php]
<?
include "config.php"; // file di connessione al Db$sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
$query_select= @mysql_query($sql_select) or die (mysql_error());
?>
<table><th colspan="2">Messaggi</th>
<?while($row=mysql_fetch_array($query_select))
{
$row['testo'] = str_replace(":-)", "<img src='/faccine/smile.gif'>", $row['testo']);
$row['testo'] = str_replace(":-+", "<img src='/faccine/faccia.gif'>", $row['testo']);
//Qui ho racchiuso la variabile contenente il testo
$stringa=$row['testo'];
//Caratteri massimi EFFETTIVI per riga voluti
$caratteri_riga=18;
$caratteri_riga--;//Conto i caratteri della stringa $caratteri_totali=strlen($stringa); //Spazio $spazio=" "; $cont=0; $nuova_stringa=""; $i=$caratteri_riga; while($i<$caratteri_totali) { if(!strcmp($stringa*,$spazio))//Se si vado a capo { $nuova_stringa=$nuova_stringa.substr($stringa, $cont, $i-($caratteri_totali))."<br/>"; $cont=$i; $i=$i+$caratteri_riga; if($i>=$caratteri_totali) { $i=$i-$caratteri_riga; $i=$i-$caratteri_totali+1; $nuova_stringa=$nuova_stringa.substr($stringa,$i)."<br/>"; break; } } else { $i--; } }
//qui' stampo a video
echo "<tr><td>".$row['id_user']."</td><td>".$nuova_stringa."</td><td>".$row['tempo']."</tr>";
}?>
[/PHP]
Come mai mi visualizza pagina bianca?:?
-
Prova un secondo a mettere più caratteri consentiti... Bisogna fare più controlli nella funzione per non farla andare in loop. C'è da perderci un pò di tempo.
-
Ok...ho messo 48 caratteri...facendo una prova e scrivendo piu' di 48 caratteri per riga mi da questo errore **
Fatal error**: Maximum execution time of 15 seconds exceeded in /membri/italiawebchat/minichat2.php on line 40
MessaggiOra va di nuovo in loop..:(
Cioè...quando nel form su cui scrivo ciò che voglio far visualizzare e i caratteri che inserisco sono superiori a quelli indicata nella variabile $caratteri_riga=18 mi va in loop
-
Eh allora lo script non va tanto bene, prova a fare una cosa però, riprendi lo script originale qui sopra e inserisci manualmente una stringa come ho fatto io, magari la stessa che ti va in loop e prova.
-
Ok,secondo te se si imposta un controllo di caratteri da non superare nel form che invia il testo non cambia nulla?
-
Dopo limiti gli utenti, ti conviene?
-
Allora ho fatto cosi'...
[PHP]
<?
include "config.php"; // file di connessione al Db$sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
$query_select= @mysql_query($sql_select) or die (mysql_error());while($row=mysql_fetch_array($query_select))
{
$row['testo'] = str_replace(":-)", "<img src='/faccine/smile.gif'>", $row['testo']);
$row['testo'] = str_replace(":-+", "<img src='/faccine/faccia.gif'>", $row['testo']);$stringa="Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the";
//Caratteri massimi EFFETTIVI per riga voluti $caratteri_riga=40; $caratteri_riga--; //Conto i caratteri della stringa $caratteri_totali=strlen($stringa); //Spazio $spazio=" "; $cont=0; $nuova_stringa=""; $i=$caratteri_riga; while($i<$caratteri_totali) { if(!strcmp($stringa*,$spazio))//Se si vado a capo { $nuova_stringa=$nuova_stringa.substr($stringa, $cont, $i-($caratteri_totali))."<br/>"; $cont=$i; $i=$i+$caratteri_riga; if($i>=$caratteri_totali) { $i=$i-$caratteri_riga; $i=$i-$caratteri_totali+1; $nuova_stringa=$nuova_stringa.substr($stringa,$i)."<br/>"; break; } } else { $i--; } }
echo"<table>
<th colspan="2">Messaggi</th>
</table>
</div></td>
</tr>
</table>
</div>
Ecco la stampa:<br /><br />".$row['id_user']."</td><td>".$nuova_stringa."</td><td>".$row['tempo']."</tr>";}
?>
[/PHP]
Cosi' non va in loop e mi stampa la stringa aggiunta manualmente....però non capisco perchè se la stringa voglio recuperarla tramite database mi va in loop...
-
Hai provato a prelevare una stringa dal DB e ad inserirla quindi manualmente nella variabile $stringa?
-
Ciao carlitos1982,
Ma se scrivi molti caratteri, il browser al primo spazio non lo mostra già a capo? Il problema dovrebbe presentarsi solo per molti caratteri senza che ci sia mai uno spazio.
Comunque un problema che mi pare non abbiate notato sono le faccine, magari capita che nel mezzo del tag html vi inserisca il <br>.
-
Ragazzi ho trovato finalmente!
A parte che se cercavo prima era meglio, però ero convinto che non esistesse, ed invece mentre giravo per qualche funzione da inserire nel forum ecco qui:
[PHP]
<?php
$stringa = "Questa volta deve funzionare. L'ho anche provata.";
$nuova_stringa = wordwrap($text, 20, "<br />\n");
echo $nuova_stringa;
?>
[/PHP]
-
Si,Thedarkita ho provato anche nel prelevare la variabile contenente il testo e ad inserirla nella varriabile $stringa,purtroppo però il risultato non cambia.
Oro provo subito con la funzione ripresa da swcd ossia wordwrap.
-
@carlitos1982 said:
Si,Thedarkita ho provato anche nel prelevare la variabile contenente il testo e ad inserirla nella varriabile $stringa,purtroppo però il risultato non cambia.
Oro provo subito con la funzione ripresa da swcd ossia wordwrap.Ottimo...funziona tutto alla grande ora
[php]
<?
include "config.php"; // file di connessione al Db$sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
$query_select= @mysql_query($sql_select) or die (mysql_error());while($row=mysql_fetch_array($query_select))
{
//funzione che trasforma simboli in immagine
$row['testo'] = str_replace(":-)", "<img src='/faccine/smile.gif'>", $row['testo']);
$row['testo'] = str_replace(":-+", "<img src='/faccine/faccia.gif'>", $row['testo']);$stringa=$row['testo'];
$nuova_stringa = wordwrap($stringa, 48, "<br />\n");echo"<table>
<th colspan="2">Messaggi</th>
</table>
</div></td>
</tr>
</table>
</div>
Ecco la stampa:<br /><br />".$row['id_user']."</td><td>".$nuova_stringa."</td><td>".$row['tempo']."</tr>";}
?>
[/php]Ti ringrazio mille scwd per l intuizione avuta;)Mi succede una cosa alquanto strana però ora...praticamente quando inserisco le faccine lo script mi tramuta in immagine solo la prima di faccine che inserisco....mentre se inserisco piu' faccine nello stesso messaggio quelle seguenti alla prima mi visualizza il percorso delle faccine ma non l immagine...come mai?°_°
Pensandoci a quanto detto da thedarkita questa cosa potrebbe esser dovuta al tag <br> ch e spezzetta il codice raggiunto il limite consentito di caratteri per riga e quindi non mi mostra le faccine ma bensi' il loro percorso...e credo che il problema sia proprio li' perchè aumentando i caratteri consentiti per riga le faccine vengono visualizzate sempre purchè non venga superato quel limite...
C'è un modo per evitare ciò?
-
Posta il codice html restituito dalla prima faccina che stampa correttamente fino alla faccina che non stampa (compresa).
-
Ok,ecco il codice html della pagina [php]
<table><th colspan="2">Messaggi</th>
</table>
</div></td>
</tr>
</table>
</div>
carlitos</td><td><img src='/faccine/smile.gif'></td><td>01:42:32</tr><table><th colspan="2">Messaggi</th>
</table>
</div></td>
</tr>
</table>
</div>
carlitos</td><td><img src='/faccine/smile.gif'><img<br />src='/faccine/faccia.gif'></td><td>01:29:25</tr><table><th colspan="2">Messaggi</th>
</table>
</div></td>
</tr>
</table>
</div>
carlitos</td><td><img src='/faccine/smile.gif'><img<br />src='/faccine/faccia.gif'></td><td>01:27:09</tr><table><th colspan="2">Messaggi</th>
</table>
</div></td>
</tr>
</table>[/php]
Ho notato quel <br> che mi spezzetta il tag img...
-
Ok abbiamo capito dov'è il problema:
<img src ```Allora analizziamo la situazione: abbiamo il problema che c'è lo spazio tra img ed src; quindi proporrei di fare una cosa: togliamo tutti gli spazi da
<img src='/faccine/smile.gif'>
ed inserisci questo al posto del codice precedente nello script
<img_src='/faccine/smile.gif'>
Fatto questo non penso che un utente inserisca una stringa "img_src" quindi possiamo inserire un controllo sulla stringa che sostituisca al frammento di stringa passato (<img_src) questo: <img src Puoi farlo con uno ****str_replace****. Spero di esser stato chiaro (vado di fretta:D). Prova e facci sapere. ;)
-
Credo di si....ora provo;)