Visualizzazione risultati 1 fino 9 di 9

Discussione: [PHP] Troncare le parole lunghe con i puntini quando arriva al bordo destro

  1. #1
    Guest

    Predefinito [PHP] Troncare le parole lunghe con i puntini quando arriva al bordo destro

    Vorrei limitare la lunghezza delle "frasi" (badate non delle sole "parole"..)
    Ma vorrei farlo NON contando il numero dei caratteri della frase, ma bensì la loro lunghezza in pixel...

    oppure... in alternativa... se proprio non si puo fare... Quale è quel carattere la cui larghezza delle lettere è la stessa sia per maiuscole che minuscole (cioè la "i" ha la stessa larghezza della "M"...)?..

  2. #2
    Guest

    Predefinito

    quei caratteri si chiamano "fixed width" (lunghezza fissa), non ricordo se e quali sono fra quelli standard di windows...

    non mi pare ci sia una funzione che ti ritorni la lunghezza in pixel di una stringa...
    ricordo che c'è Imagefontwidth, ma ti da la lunghezza di un solo carattere

  3. #3
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    puoi utilizzare la funzione substr()
    quindi, verrà substr($variabile, 0, 100); echo"...";

    $variabile indica la variabile in cui è contenuto il testo
    100 è il numero massimo di caratteri, ovviamente puoi cambiarlo con qualsiasi valore.

    Per contare la lunghezza penso che non si possa fare. a limite prova in css x la stessa lungheza delle lettere: letter spacing: -1px;

    ciaooo
    Ultima modifica di silverseraph : 17-02-2006 alle ore 21.44.34

  4. #4
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Se vuoi usare il font monospaziato, usa lo style:
    Codice HTML:
    .frase {
     font-family : "Courier New", Courier, monospace;
    }
    Non mi è chiarissimo invece qual è la situazione delle frase da spezzare..
    se intendi un qualcosa tipo l'anticipazione del messaggio (prime frasi) nella lista di Gmail (non so se hai presente), dovrai utilizzare un overflow: hidden per nascondere l'eccesso della frase.
    Oppure intendi "troncare e mandare A CAPO"??
    non è chiaro, se aggiungi qualche dettaglio sul contesto o ci fai vedere qualcosa è meglio.


    Inverno:
    Imagefontwidth (function PHP) serve per avere la lunghezza di font bitmap di default della libreria GD (quindi un contesto moolto lontano).
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da heracleum
    Inverno:
    Imagefontwidth (function PHP) serve per avere la lunghezza di font bitmap di default della libreria GD (quindi un contesto moolto lontano).
    Opss ... sinceramente pensavo al solito script per scrivere frasi su un'immagine, voi dove avete letto che è html/css?

    tra l'altro non posso controllare sul sito del php perchè sono con la connessione di backup e il sito di php mi da connection time-out 3 pagine si e mezza no (come circa il 50% delle pagine che cerco di leggere)

  6. #6
    Guest

    Predefinito

    Ecco a cosa mi servirebbe.. Nella home del sito ci sono due piccoli riquadri sulla destra, si tratta dei riquadrini titolati "ultimi post" e "ultimi commenti".. attualmente la lunghezza dei "titoli dei post" rappresentati in quel piccolo riquadretto è troncato con:

    Codice PHP:

    if (strlen($nome_post) >=8) $nome_post=substr($nome_post,0,8)."...";
    Quel numero di lettere, "8" lettere, è il limite che ho stabilito nell'ipotesi che un furbacchione metta un nome tipo "MMMMMMMMMMMMMM". Essendo la lettera "M" una lettera molto larga, 9 caratteri "M" + 3 puntini di sospensione aggiunti sono gia sufficienti ad andare fuori dal riquadretto.. Ma per nomi "normali" e senza "M" sono decisamente troppo pochi otto caratteri (come potete vedere 8 caratteri normali arrivano a stento a metà del riquadreatto...)

    Da qui viene fuori l'apertura del mio thread...

  7. #7
    Ospite Guest

    Predefinito

    siccome non puoi sapere cosa ti scrivono, devi per forza calcolare la lunghezza della stringa come se fossero tutte M (da qui infatti em dei css :)) .
    Però devi essere ben sfortunato a trovare un tizio che oltre che ficcarti tipo sssssssssssssssssssss ti faccia anche la furbata di mettere una m..quindi in sistesi se pensi a tutto devi per forza tenerti + stretto. Fossi in te però no lo farei

  8. #8
    L'avatar di heracleum
    heracleum non è connesso Utente storico
    Data registrazione
    21-01-2004
    Messaggi
    3,333

    Predefinito

    Ok ora si è capito molto meglio,
    soprattutto il fatto che la "troncatura era netta" e non "troncatura per mandare a capo".

    Quindi è valido il trucco (tipo gmail) che ti ho proposto per mostrare l'inizio di un testo, soddisfa quel che ti interessa e che vuoi risolvere con espedienti più complessi:

    <div style="overflow:hidden">blablablablabla</div>

    indicando così ogni item della lista di link hai la certezza che anche se "blablabla" è lungo un metro di caratteri, tutta la parte che non entra nei limiti del suo div contenitore verrà automaticamente ignorata e nascosta.
    A me sembra la soluzione più immediata e sicura, senza andarsi a impelagare con lunghezze di caratteri e puntini vari.
    Per la cronaca, di solito (nei font a spaziatura variabile) il carattere più "molesto" in questi casi è la "W", ancora più lunga della M, nello spazio occupato da una W entrano almeno quattro "i" e questo fa pensare che è meglio lasciare questa strada delle misure, soprattutto in un contesto html.
    Avvertimento: richiedere in privato questioni tecniche produrrà inevitabilmente una supercazzola prematurata come risposta. (5 served)

  9. #9
    Guest

    Predefinito

    Ok! Ho Messo l' overflow:hidden per i furbacchioni..

    Ho tuttavia lasciato ANCHE lo strlen con i puntini, per il taglio "gradevole" dei nomi scritti in una maniera comunque regolare... (senza uso eccessivo di M o W, lettere "larghe")..

    Grazie!!!
    Ultima modifica di attorianzo : 18-02-2006 alle ore 14.15.18

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •