FAQ |
Kalender |
2009-03-06, 16:32 | #1 | ||
|
|||
Flitig postare
|
Har ett script som klipper ner text efter valt antal tecken....
Men det händer något skumt. Text som går in: Citat:
Citat:
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; } } |
||
Svara med citat |
2009-03-06, 17:06 | #2 | |||
|
||||
Mycket flitig postare
|
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]. |
|||
Svara med citat |
2009-03-06, 17:53 | #3 | ||
|
|||
Har WN som tidsfördriv
|
Varför gör du inte en rtrim bara ?
|
||
Svara med citat |
2009-03-06, 21:15 | #4 | |||
|
||||
Mycket flitig postare
|
Citat:
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). |
|||
Svara med citat |
2009-03-07, 14:29 | #5 | |||
|
||||
Supermoderator
|
eller utf8_decode()?
|
|||
Svara med citat |
2009-03-09, 09:51 | #6 | ||
|
|||
Flitig postare
|
Citat:
??? Vill iofs inte decoda utf8, vill "klippa" strängar till bestämd längd. Citat:
Hittade också mer info så jag kan lära mig! http://www.regular-expressions.info |
||
Svara med citat |
Svara |
|
|