---
title: "Plocka ut långa och korta ord med regexp"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/102823-plocka-ut-långa-och-korta-ord-med-regexp"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Ankman"
published: "2004-05-03T10:28:59.000Z"
updated: "2004-05-03T14:13:45.000Z"
replies: 4
views: 568
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/102823-plocka-ut-långa-och-korta-ord-med-regexp"
---

# Plocka ut långa och korta ord med regexp

## #1 — Ankman, 2004-05-03T10:28Z

Jag vill ta bort ord som är kortare än tre tecken eller längre än 20 tecken från en sträng. Så här långt har jag kommit: 

```
$text = preg_replace('/(\s[\w]{1,2}\s)|(\s[\w]{20,}\s)i/', ' ', $text);
```

 
Problemet kommer när orden innehåller åäö, då funkar det inte. Jag har även provat att byta ut bokstavsklassen(heter det så?) mot \[a-z0-9åäö\] men resultatet blir det samma. 
Någon som är bra på detta?

(Om man använder \[php\]-taggen så tas alla "\\" bort från texten, märkligt)

Permalänk: https://www.webforum.nu/p/102823

## #2 — Matte, 2004-05-03T13:05Z

Kör setlocale() tidigare i skriptet. Någon av följande kombinationer brukar fungera:

```php
setlocale(LC_ALL, 'sv_SE');
setlocale(LC_ALL, 'swedish');
setlocale(LC_ALL, 'sv_SE.ISO8859-1');
```

 
Då ska du nog få med åäö att ingå i \\w.

Permalänk: https://www.webforum.nu/p/1337328

## #3 — Ankman, 2004-05-03T13:21Z

Det fungerar utsökt, åäö kommer med nu (jag använde den första varianten). Dock får jag det fortfarande inte att fungera som jag vill. Alla korta ord rensas bort men inte långa. Jag har ändrat lite: 

```
$text = preg_replace('/(\b[\w]{1,2}\b)|(\b[\w]{20,}\b)i/', ' ', $text);
```

Är detta förresten rätt sätt att använda \\b på? Det verkar i alla fall fungera som jag vill.

Permalänk: https://www.webforum.nu/p/1337338

## #4 — Matte, 2004-05-03T13:26Z

Testa så här:

```php
$text = preg_replace('/\\b(\\w{1,2}|\\w{20,})\\b/', ' ', $text);
```

Permalänk: https://www.webforum.nu/p/1337344

## #5 — Ankman, 2004-05-03T14:13Z

Funkar prima, tackar.

Permalänk: https://www.webforum.nu/p/1337377

---

Tråden på webben: https://www.webforum.nu/amne/php/102823-plocka-ut-långa-och-korta-ord-med-regexp
