Szöveg rövidítése helyesen


A lenti kódrészlet nem tesz egyebet, minthogy levágja a szövegünket a paramétertől kapott hosszúságra. Ez még önmagába nem nagy dolog, hisz a substr php függvény egyszerűen megoldja a feladatot. A függvény annyiban különbözik, hogy ez az utolsó szónál vágja le szövegünket. Ez rövid leírásoknál, címeknél hasznos lehet.

function trim_text($input, $length, $ellipses = true, $strip_html = true) {
    //ha ha paraméternek van értéke kiveszi a HTML elemeket
    if ($strip_html) {
        $input = strip_tags($input);
    }
    //csak akkor vágjuk le ha hosszabb mind amit mi szeretnénk
    if (strlen($input) <= $length) {
        return $input;
    }
    //megkeressük az utolsó space -t
    $last_space = strrpos(substr($input, 0, $length), ' ');
    $trimmed_text = substr($input, 0, $last_space);
    //betesszük a levágást jelző karaktereket
    if ($ellipses) {
        $trimmed_text .= ' ...';
    }
    //a levágott szöveg
    return $trimmed_text;
}

Példakód letöltése itt ( trim_text.zip )


További jó kódolást!

Kapcsolódó bejegyzések:
  • Üdv! Aki fejleszt php-cli-re, valószínűleg beleütközött abba a problémába, hogy lehet a felhasználótól adatot bekérni. Sok nyelvben, például Python-ban ez egysz …

  • Felmerült egy kérdésként, hogy lehetne egy login oldal tartalmánál (belépési név és jelszót kell megadni) jelezni a felhasználók számára azt, hogy melyik mező mi …

  • Weblapkészítés során ha egy olyan oldalt kell készíteni, hol egy vagy akár több input mező is van (regisztráció, kapcsolatfelvétel stb..), hasznos lehet megadni, …

  • Az alábbi JavaScript kód segítségével könnyedén ellenőrizhetjük, hogy a megadott e-mail cím formailag helyes-e. A function TRUE vagy FALSE értékkel tér vissza. ( …

  • Form-ok készítése esetén biztos volt már dolgod az alapértelmezett (és meglehetősen csúnya) nagy, szürke “submit” gombokkal. Ezek sok esetben rontanak a …

A cikket beküldte: Gombos Lorand (http://)

6 hozzászólás

  1. Zogmund says:

    Nem rossz, de mért jó az, ha kiveszed a html tag -eket? Hisz akkor elveszik a formázás… Ha amúgy is formázott a szövegem, akkor nem fogom ezt használni a formázás miatt.
    Egyébként jó.

    Talán annyi lehetne rugalmasítani (nem tudom van-e ilyen szó :P), hogy a $ellipses default értéke “” (üres string), és akkor paraméterként meg lehet adni levágást jelző karaktereket, és egy if -el kevesebb.

    Zogmund

  2. gomby says:

    A formazas leszedese az opcionalis. Sokszor pl mikor cimeket akarunk kiiratni, vegul is csak a szoveget akarjuk levagni a formazas alltalaban utolag kerul ra. Ennek ellenere $strip_html false -ra allitva kiutjuk ezt a lehetoseget.

    A masodik megjegyzesedben teljesen igazat adok neked. Nekem “…” kellett s ezt hagytam, de siman ha ures stringre allitanam default akkor jobb lenne, hisz ha van erteke !empty akkor az ellipses erteket ragasztanam a szoveg vegre.

    Koszi a hozzaszolast mindenkeppen jo otlet volt ez az ellipses -es dolog.

  3. gomby says:

    Az $ellipses -es modositast valahogy igy kepzelnem el:

    if ($ellipses) {
            $trimmed_text .= ' ...';
        }

    helyett

    if (!empty($ellipses)) {
            $trimmed_text .= $ellipses;
        }

    Meg azzal egeszitenem ki, hogy a levagast jelzo karakterek csak akkor legyenek benne, ha a szoveg tenylegesen hoszabb mind a $lenght.

  4. Zogmund says:

    gomby: szerintem nem kell az if, hisz ha az $ellipses úgy is empty, akkor a konkatenáció nem fűz hozzá semmit! Ezért is mondtam, hogy így nem kell az az if.

    Szerintem ;)

  5. gomby says:

    Igen helyes, nem tudom miert irtam az utolso hozzaszolasomat :)

  6. seya says:

    Köszönöm… Most sokat segítettél ezzel a fv-el:)

Szólj hozzá
a Szöveg rövidítése helyesen c. bejegyzéshez

- Engedélyezett HTML elemek: <a> <em> <strong> <ul> <ol> <li>
- Forráskód beküldéséhez tedd a kódot ezek közé: <pre lang="php" line="1">Kódrészlet helye itt</pre>