Kom ihåg mig?
Home Menu

Menu


Användbar funktion

Ämnesverktyg Visningsalternativ
Oläst 2010-05-31, 17:30 #1
robincox robincox är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2008
Inlägg: 301
robincox robincox är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2008
Inlägg: 301
Standard 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) == '&lt;') {

$CPtext = substr_replace($CPtext,'',$stepper,4);
$mode = 'erase';

} else if (substr($CPtext,$stepper,4) == '&gt;') {

$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;

}

Senast redigerad av robincox den 2010-05-31 klockan 17:43
robincox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-01, 00:13 #2
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
KarlRoos KarlRoos är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2007
Inlägg: 1 416
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) {
	$text		= substr($text, 0, $maxchars);
	$position	= strrpos($text, ' ');
	
	if($position > 0){
		$text = substr($text, 0, $position);
	}
	
    return $text;
}
KarlRoos är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-01, 09:29 #3
robincox robincox är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2008
Inlägg: 301
robincox robincox är inte uppkopplad
Flitig postare
 
Reg.datum: Aug 2008
Inlägg: 301
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;
}
robincox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-01, 10:37 #4
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
Sen är väl mb_substr att föredra då den klarar utf-8.
nosnaj är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-01, 14:34 #5
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av nosnaj Visa inlägg
Sen är väl mb_substr att föredra då den klarar utf-8.
Jupps, multibytefunktionerna är bra att ha.
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-07, 09:24 #6
martines avatar
martine martine är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Mar 2005
Inlägg: 767
martine martine är inte uppkopplad
Mycket flitig postare
martines avatar
 
Reg.datum: Mar 2005
Inlägg: 767
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.
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2010-06-07, 11:04 #7
fabians avatar
fabian fabian är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2004
Inlägg: 2 162
fabian fabian är inte uppkopplad
Klarade millennium-buggen
fabians avatar
 
Reg.datum: Jul 2004
Inlägg: 2 162
Detta börjar likna codegolf
fabian är inte uppkopplad   Svara med citatSvara med citat
Svara

Taggar
php funktion


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 22:57.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017