---
title: "Hitta alla matchande substrängar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/15226-hitta-alla-matchande-substrängar"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "spango"
published: "2001-02-03T02:51:00.000Z"
updated: "2001-02-04T11:54:00.000Z"
replies: 4
views: 276
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/15226-hitta-alla-matchande-substrängar"
---

# Hitta alla matchande substrängar

## #1 — spango, 2001-02-03T02:51Z

Finns det någon funktion som plockar ut alla delsträngar som matchar till exempel en regexp i en sträng? Vad jag vill göra är följande:

```
$text = "Alla barn gråter nu.";
$pattern = "/\S+/"; # Matcha ett eller flera icke-blanksteg
$ord = plocka_ut($text, $pattern);
/*
Nu vill jag att $ord ska vara en array som ser ut så här:
array("Alla", "barn", "gråter", "nu.")
*/
```

Jag har stirrat mig blind på sträng- och regexpfunktionerna, men jag kan tamefan inte hitta något som gör det jag vill. Har jag letat för slött, eller är det helt enkelt så att det inte finns någon funktion för detta?

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

## #2 — Robban, 2001-02-03T10:34Z

Om du bara vill separera en sträng i olika ord så behöver du inte använda regexp. Går att göra med [explode()](http://se.php.net/manual/en/html/function.explode.html).

```
$text = "Alla barn gråter nu.";
$ord = explode (" ", $text);
```

Detta är snabbare än att använda reguljära uttryck. Om du vill gardera dig mot att fler än ett mellanslag separerar orden så kan du använda [split()](http://se.php.net/manual/en/html/function.split.html) eller [preg_split()](http://se.php.net/manual/en/html/function.preg-split.html).

```
$text = "Alla barn     gråter nu";
$ord = preg_split("/\s+/",$text);
```

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

## #3 — spango, 2001-02-03T16:17Z

Nu var det dessvärre inte så enkelt. Det här ska användas i en funktion som görlänkar av alla url:er i en text. Just nu har jag bara whitespace som avslutning av url:erna, men tyckte att det vore najs om \>, " och ' kunde få vara det också. Mönstret jag skulle vilja plocka ut är väl typ &#0124;http://\[^\>\\s\\"\\'\]+&#0124;

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

## #4 — Robban, 2001-02-04T09:19Z

Ok, och du vill ha alla URL:er samlade in en array? Förstår jag dig rätt då?

Då kan du t.ex. använda [preg_match_all()](http://se.php.net/manual/en/html/function.preg-match-all.html).

Ett exempel.

```
$text = 'Alla [url="http://link1/"]http://link1/[/url]  barn "HTTP://link2/" \'http://link3/\' gråter <http://link4/> nu.';
preg_match_all ("&#0124;http://[^>\s\"\']+&#0124;is", $text, $ord);
```

Nu kommer **$ord** att vara en flerdimentionell array, och den "underarray" du vill ha tag på (som innehåller alla URL:er) finns i **$ord\[0\]**.

Ett exempel som skriver ut alla URL:er.

```
while (list ($key, $val) = each ($ord[0])) {
     echo "$key => $val<br>";
}
```

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

## #5 — spango, 2001-02-04T11:54Z

Toppen! Jag satt och fluktade på de där funktionerna, men jag fick aldrig nån rätsida på dem. Tack tack tack.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/15226-hitta-alla-matchande-substrängar
