Kom ihåg mig?
Home Menu

Menu


PHP klipper konstigt i text....

Ämnesverktyg Visningsalternativ
Oläst 2009-03-06, 16:32 #1
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Har ett script som klipper ner text efter valt antal tecken....
Men det händer något skumt.

Text som går in:
Citat:

Det är med glädje vi kan konstatera att intresset varit stort för våra två träningsmatcher.
Ut:
Citat:
Det är med glädje vi kan konstatera att intresset varit stort för v�…
Så blir texten efter att jag "kortat ner" den.

Varför blir å istället �? (ser inte ut som här på forumet, det ser ut som en box, ni har säkert sett det)

Texten som går in är verkligen å inte å så det är inte därför.

Koden:
Kod:
function neat_trim($str, $n, $delim='…') {
	$len = strlen($str);
	$str = strip_tags($str);
	
	if ($len > $n) {
 preg_match('/(.{' . $n . '}.*?)\b/', $str, $matches);
 return rtrim($matches[1]) . $delim;
	}
	else {
 return $str;
	}
}
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-06, 17:06 #2
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
Du använder nog utf-8 vilket är bra. PHP är däremot inte alltid lika klar i huvudet.

preg_match('/(.{' . $n . '}.*?)\b/u', $str, $matches);

Notera u:et i raden ovan. Vet dock inte om \b hanteras korrekt av php vid andra bokstäver än [a-z].
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-06, 17:53 #3
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
studiox studiox är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Aug 2004
Inlägg: 1 356
Varför gör du inte en rtrim bara ?
studiox är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-06, 21:15 #4
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
Citat:
Originally posted by studiox@Mar 6 2009, 17:53
Varför gör du inte en rtrim bara ?
Exempelvis för att:

1. Det blir en himla massa tecken du måste ange att trimma bort,
2. rtrim är antagligen inte heller utf-8-medveten,
3. det går inte att trimma till ordgränser på något enkelt sätt

Regexp är väl utmärkta för just den här typen av uppgifter (koden i exemplet skulle förstås kunna kortas ner till en rad om man så vill).
martine är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-07, 14:29 #5
FredrikMHs avatar
FredrikMH FredrikMH är inte uppkopplad
Supermoderator
 
Reg.datum: Apr 2004
Inlägg: 1 501
FredrikMH FredrikMH är inte uppkopplad
Supermoderator
FredrikMHs avatar
 
Reg.datum: Apr 2004
Inlägg: 1 501
eller utf8_decode()?
FredrikMH är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-03-09, 09:51 #6
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Citat:
Ursprungligen postat av FredrikMH
eller utf8_decode()?

???

Vill iofs inte decoda utf8, vill "klippa" strängar till bestämd längd.

Citat:
Ursprungligen postat av martine
Du använder nog utf-8 vilket är bra. PHP är däremot inte alltid lika klar i huvudet.
preg_match(/(.{ . n . }.*?)b, str, matches);
Notera u:et i raden ovan. Vet dock inte om b hanteras korrekt av php vid andra bokstäver än [a-z].
Tack! Det fungerade....

Hittade också mer info så jag kan lära mig!
http://www.regular-expressions.info
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Svara


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 19:13.

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