| Autore |
Discussione |
|
|
kensan
Nuovo Utente
44 Messaggi |
Inserito il - 01/10/2005 : 16:10:05
|
Ho dei link a volte lunghi e pure dei testi inseriti da utenti sconosciuti, testi che possono essere lunghi e senza spazio tipo:
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890 Dovrei inserire questo testo (prelevato da un data base) in uno colonna larga 160 pixel.
Con una tabella non funziona perché si allarga fino a contenere tutto il link/testo se non ha spazi, forse serve il CSS.
Mi interesserebbe sia che andasse a capo forzatamente sia che il testo troppo lungo venga coperto/eliminato/oscurato.
Un aiutino?
Ciao :)
|
|
|
MpMp
Amministratore
 

298 Messaggi |
Inserito il - 05/10/2005 : 13:35:00
|
| allora...dimmi che puoi usare php, asp o javascript...ti prego dimmelo.... |
MpMp consiglia:





|
 |
|
|
kensan
Nuovo Utente
44 Messaggi |
Inserito il - 06/10/2005 : 22:01:29
|
Citazione: Messaggio inserito da MpMp
allora...dimmi che puoi usare php, asp o javascript...ti prego dimmelo....
Si posso metterci il php, però credevo che un semplice "style width="160px"" a qualche cosa di analogo fosse sufficiente, invece mi pare non sia così da quel che dici.
Vada per il php, come dici di fare? |
 |
|
|
MpMp
Amministratore
 

298 Messaggi |
Inserito il - 09/10/2005 : 13:36:35
|
Scusa il ritardo ma nel tempo libero sto lavorando alla nuova grafica di questo sito.
Il codice è il seguente
<?
$stringa="1234567890"; E' la stringa da dividere
$lunghezza_stringa=strlen($stringa); Variabile di servizio
$caratteri_per_linea=2; Dopo quanti caratteri vuoi mandarre a capo la stringa
for ($k=0;$k<((integer)($lunghezza_stringa/$caratteri_per_linea));$k++)
{
echo substr($stringa, $k*$caratteri_per_linea, $caratteri_per_linea) . "<br>";
}
?>
Chiedimi info se è difficile a capire il for e dimmi se ti piace una cosa del genere o lo vuoi più automatizzato... |
MpMp consiglia:





|
 |
|
|
kensan
Nuovo Utente
44 Messaggi |
Inserito il - 10/10/2005 : 15:51:55
|
Citazione: Messaggio inserito da MpMp
Scusa il ritardo ma nel tempo libero sto lavorando alla nuova grafica di questo sito. ... Chiedimi info se è difficile a capire il for e dimmi se ti piace una cosa del genere o lo vuoi più automatizzato...
Quindi vedrò una nuova grafica prossimamente? Bene! :)
Il codice mi è utile perché non ho un manuale di php, comunque il for se vuoi te lo posso fare in assembler, per dire che di codici ne conosco.
Secondo me si può fare anche come dici tu ma non proprio esattamente. Diciamo che occorre dividere le parole e capire quanto sono lunghe, una cosa del genere:
$superstringa="Giorgio ha detto: ciao 123456789012345678901234567890" Parole[]=dividi_stringa_in_parole($superstringa); // Parole è un array di stringhe, ogni elemento è una parola
For i=1 to dim(Parole[]) { if (len(Parole[i])>$caratteri_per_linea) { $stringa=Parole[i]; //il tuo programma che divide in pezzi $stringa, magari mettendo uno spazio al posto dei <br> } else {echo Parole[i]} }
In questo modo le stringhe troppo lunghe vengono frammentate da uno spazio come fa il tuo codice ma in più non vengono frammentate le stringhe di questo tipo: "ciao ciao ciao ciao ciao ciao" in quanto gli spazi sono dei frammentatori.
Il problema è trovare o fare la funzione: Parole[]=dividi_stringa_in_parole($superstringa);
Esiste? |
 |
|
|
MpMp
Amministratore
 

298 Messaggi |
Inserito il - 10/10/2005 : 20:44:04
|
aspetta un attimo...vorrei farti una domanda: ma io cosa ho fatto?
Ho fatto lo stesso che hai fatto tu... [NdR: il mio tono è sereno, non inca] Io ho limitato l'uso di variabili (ne uso 3, ma senza problemi le riduco a 2, "$lunghezza_stringa"), non ho usato array e ho limitato le stringhe e la chiamate alle funzioni. Io l'avrei risolto così, se poi tu mi dici: "Lo so, ma vorrei si facesse come ho detto io." Io non ho nessun problema, anche perchè forse potrebbe essere che l'array in seguito ti serva a qualcos'altro.
Aspetto tua risposta per eventuali modifiche. |
MpMp consiglia:





|
 |
|
|
kensan
Nuovo Utente
44 Messaggi |
Inserito il - 11/10/2005 : 19:57:53
|
Citazione: Messaggio inserito da MpMp
aspetta un attimo...vorrei farti una domanda: ma io cosa ho fatto?
Ho fatto lo stesso che hai fatto tu... [NdR: il mio tono è sereno, non inca] Io ho limitato l'uso di variabili (ne uso 3, ma senza problemi le riduco a 2, "$lunghezza_stringa"), non ho usato array e ho limitato le stringhe e la chiamate alle funzioni. Io l'avrei risolto così, se poi tu mi dici: "Lo so, ma vorrei si facesse come ho detto io." Io non ho nessun problema, anche perchè forse potrebbe essere che l'array in seguito ti serva a qualcos'altro.
Aspetto tua risposta per eventuali modifiche.
Mi sembrava di avere capito il codice che hai scritto ma forse mi sbaglio. Provo a fare un esempio, vediamo se sul pratico ci troviamo :) : Suppongo che il $titolo di un commento sia "ciao ciao ciao ciao ciao ciao ciao.", se lo metto dentro una tabella da 50 pixel con un echo $titolo non ho nessun problema in quanto va a capo quando è il caso, per esempio si avrà:
ciao ciao ciao ciao ciao ciao ciao.
Se invece $titolo vale "1234567890123456789012345678901234567890" mi sballa tutto il layout grafico perché non ci sta nella tabella di 50 pixel.
Ora mi chiedo: il codice che hai scritto tu distingue i due casi? In pratica il primo $titolo non è da dividere, infatti sarebbe brutto vedere:
ciao ciao c iao ciao ci ao ciao cia o.
e anche inutile una divisione di questo genere, meglio lasciare che vada a capo quando è il caso. Invece il secondo $titolo è da dividere. Che dici? |
 |
|
|
MpMp
Amministratore
 

298 Messaggi |
Inserito il - 12/10/2005 : 13:42:15
|
aaaaaaaaaaaaaaaaaaaaaaaaaaah!
Vedi che ci siamo!
Non mi avevi detto che c'erano pure parole corte, ok hai ragione tu! faccio un paio di prove e poi ti posto il codice.
Sorry. |
MpMp consiglia:





|
 |
|
|
kensan
Nuovo Utente
44 Messaggi |
Inserito il - 12/10/2005 : 15:22:59
|
Citazione: Messaggio inserito da MpMp
aaaaaaaaaaaaaaaaaaaaaaaaaaah!
:) bene, ci siamo intesi.
Grazie in anticipo per il codice e ricorda che non ho nessuna fretta, magari se hai da fare e ti ricordi le funzioni che servono basta che posti quelli, ad assemblare il codice sono bravino...^_-
Ciao :) |
 |
|
|
MpMp
Amministratore
 

298 Messaggi |
Inserito il - 16/10/2005 : 13:31:11
|
chunk_split: divide una stringa in n caratteri
chunk_split($stringa_da_dividere, n);
Es. $stringa = "Are you ready?"; $stringa_slittata = chunk_split($stringa, 5);
Devo ancora provarlo, l'ho trovato per caso su un libro di php... |
MpMp consiglia:





|
 |
|
|
kensan
Nuovo Utente
44 Messaggi |
Inserito il - 16/10/2005 : 20:42:34
|
Citazione: Messaggio inserito da MpMp
chunk_split: divide una stringa in n caratteri
Questa è utile ma va aggiunto preg_split che divide in parole la $frase, questo è il codice finale che mi serve:
$frase="hypertext language, programming 123456789 12345678 1234567890 123456789123456789 12345678912345678 1234567891234567890 12345678912345678900 ciao ciao ciao";
$parole = preg_split ("/\s/", $frase);
$len_max=9;
for($i=0;!empty($parole[$i]);$i++)
{
echo chunk_split($parole[$i], $len_max);
} Il risultato del codice é:
hypertext language, programmi ng 123456789 12345678 123456789 0 123456789 123456789 123456789 12345678 123456789 123456789 0 123456789 123456789 00 ciao ciao ciao |
Modificato da - kensan in data 16/10/2005 20:44:49 |
 |
|
|
MpMp
Amministratore
 

298 Messaggi |
Inserito il - 17/10/2005 : 14:17:06
|
Più che altro restituisce una matrice...
preg_split ( criterio, $stringa );
Però però... Restituisce 2 valori della parola: la parola stessa e la posizione del carattere di partenza, criterio escluso... Non riesco a pensare ad un'utilizzo d questa matrice...
Ho trovato pure questo: "Esempio 2. Esempio di suddivisione di un testo in caratteri.
$str = 'string'; $chars = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY); print_r($chars);
E' a questo link: http://www.aoindustries.com/docs/php-4.2.3/it/function.preg-split.html |
MpMp consiglia:





|
 |
|
|
kensan
Nuovo Utente
44 Messaggi |
Inserito il - 17/10/2005 : 21:33:39
|
$parole = explode(" ", $row["titolo"]);
//$parole = preg_split ("/\s/", $frase);
$len_max=20; //precipitevolissimevolmente (26)
$titolo="";
for($i=0;$i < count($parole);$i++)
{
$parola=$parole[$i];
if (!empty($parola))
{
$titolo=$titolo . chunk_split($parola, $len_max);
}
}
$titolo=substr($titolo, 0, strlen($titolo)-2);
//Spazio finale piu' fine stringa (messi da chunk_split) da togliere Questo è il codice che gira attualmente, ho preferito usare explode() che mi sembra meglio, un aspetto poco comprensibile è che chunk_split aggiunge due caratteri dopo l'ultima parola, lo spazio e un carattere non visualizzato per cui è occorso toglierli. |
 |
|
| |
Discussione |
|