![]() |
Användbar funktion
Tänkte bara dela med mig av en användbar funktion som jag precis skapat.
Denna funktion är användbar om du vill visa en preview av en lång text. Du kan själv bestämma längden på texten. Det fiffiga med den är att den rensar bort oönskade delar av texten som skulle förstöra din preview, t.ex. bilder, javaScripts eller html. Jag vet att jag enkelt hade kunnat använda mig av striptags() för den delen men det var roligare att skapa allt själv. Så här fungerar den, byt ut $CPtext mot den långa text du vill skapa en preview av. Byt ut $CPLength mot önskat antal tecken som din preview ska bestå av. Exempel: echo cleanPeek($enstortext, 1000); Nedan ser du funktionen: function cleanPeek ($CPtext, $CPLength) { $CPtext = htmlentities($CPtext); $length = strlen($CPtext); $stepper = 0; for ($char=0;$char<=$length;$char++) { if (substr($CPtext,$stepper,4) == '<') { $CPtext = substr_replace($CPtext,'',$stepper,4); $mode = 'erase'; } else if (substr($CPtext,$stepper,4) == '>') { $CPtext = substr_replace($CPtext,'',$stepper,4); $mode = 'read'; } else if ($mode == 'erase') { $CPtext = substr_replace($CPtext,'',$stepper,1); } else { $stepper ++; } } $CPtext = html_entity_decode($CPtext, ENT_QUOTES, "UTF-8"); $cleanPeek = substr($CPtext,0,$CPLength); $cleanPeek = substr($cleanPeek,0,strrpos($cleanPeek,' ')); return $cleanPeek; } |
Då kan jag lika gärna bjuda på en kortare version för dem som inte behöver all funktionalitet:
Kod:
function excerpt($text, $maxchars) { |
lägg till striptags() på $text i början av funktionen så har du fortfarande en kort funktion men som även tar bort bilder, html, javascript mm.
function excerpt($text, $maxchars) { $text = strip_tags($text); $text = substr($text, 0, $maxchars); $position = strrpos($text, ' '); if($position > 0){ $text = substr($text, 0, $position); } return $text; } |
Sen är väl mb_substr att föredra då den klarar utf-8.
|
Citat:
|
Nu har jag bara skummat igenom funktionerna men går det inte lika bra med bara:
preg_match('/^(.{1,1000})/ui',striptags(trim($txt)),$m) Fungerar utmärkt med utf-8. Resultatet är i $m[1] för övrigt. Vill man dessutom inte klippa ord så kan man ju lägga till detta i regexp:et. PS. Använd aldrig substr med strängar som kan vara i utf-8 eftersom den helt enkelt klipper tecknen i mitten och skapar korrupta strängar. |
Detta börjar likna codegolf :)
|
Alla tider är GMT +2. Klockan är nu 07:59. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson