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 )[](/kepek/2010/02/trim_text.zip)További jó kódolást!
Harder
Profil
Korábbi hozzászólások (6)
A régi blogon érkezett hozzászólások archívuma. Új hozzászólást már nem lehet írni.
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
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.
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.
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 ;)
Igen helyes, nem tudom miert irtam az utolso hozzaszolasomat :)
Köszönöm... Most sokat segítettél ezzel a fv-el:)
Van hozzáfűznivalód? Írj nekem közvetlenül.
Kapcsolat