Autor | Zpráva | ||
---|---|---|---|
Ludek Profil * |
#1 · Zasláno: 1. 7. 2014, 13:05:44
Řeším tady maximální délku znaků. Problém je v tom, že nyní počítám počet mezer, ale znaky mají různý počet znaků a tak vždy nedosáhnu přibližné délky v nadpisu. Prostě ... někdy je nadpis příliš krátký při stejném počtu mezer :(
Měl bych zřejmě počítat počet znaků a porovnávat to s počtem mezer? Bohužel nemám ponětí jak by takový script vypadal. Najdu zde někdo, kdo mě poradí? Aktuálně používám svou funkci: function Popisek($text,$pocet) { if ($pocet == "") $pocet = "6"; else $pocet = $pocet; $clear = str_replace("\r\n"," ",strip_tags($text)); $pocet_slov = explode(" ", $clear); foreach ($pocet_slov as $slovo) { if (strlen($slovo) >= "4") $p++; $vysledek .= $slovo." "; if ($p == $pocet) {$vysledek .=" ..."; break;} } return $vysledek; } $nadpis = Popisek($data, "7"); |
||
juriad Profil |
Nesnaž se o délku ve slovech, ale povol určitý počet znaků.
function popisek($text, $limit) { # strrpos najde poslední mezeru před limitem # substr vybere text od začátku po nalezenou mezeru return substr($text, 0, strrpos($text, ' ', $limit)) . "…"; } Nebo pokud nadpis neobsahuje mezeru vůbec, tak to bude fungovat podivně, to by chtělo ošetřit. Číselné konstanty se nepíší do uvozovek. Také si rohlík nezabalíš do staniolu, než ho sníž. |
||
Ludek Profil * |
#3 · Zasláno: 1. 7. 2014, 13:41:26
Díky moc za radu. Nakonec jsem to vyřešil tímto způsobem, tak že kdyby to někdo potřeboval:
function Popisek($string,$length) { $string = trim($string); if(strlen($string) > $length) { $string = wordwrap($string, $length); $string = explode("\n",$string); $string = array_shift($string) . "…"; } return $string; } |
||
Časová prodleva: 10 let
|
0