---
title: "Problem med mellanslag och PHP"
type: "forum-thread"
url: "https://www.webforum.nu/amne/webbutveckling/141177-problem-med-mellanslag-och-php"
topic: "Webbutveckling"
topic_url: "https://www.webforum.nu/amne/webbutveckling"
author: "renholm"
published: "2006-01-19T23:08:51.000Z"
updated: "2006-01-22T16:50:43.000Z"
replies: 6
views: 685
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/webbutveckling/141177-problem-med-mellanslag-och-php"
---

# Problem med mellanslag och PHP

## #1 — renholm, 2006-01-19T23:08Z

Försöker få ut ett ord ur en mening med PHP men har problem att få det snyggt.
Meningen är: 

> du till tåg mot

 

Har försökt med följande expression

```
/till (.+) mot/
```

Vilket inte fungerar, däremot fungerar

```
/till(.+)mot/
```

Är detta det bästa sättet att få ut ordet "tåg" ur meningen?

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

## #2 — mozilla, 2006-01-19T23:23Z

Kan det inte vara för att .+ matchar alla tecken, även mellanslag. Och tar därför med mellanslaget efter "tåg ". Om det bara är ett ord du vill ta ut kan du inte använda "till (\\w+) mot"

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

## #3 — renholm, 2006-01-20T10:05Z

(\\w+) fungerar inte heller, får inga träffs alls. För så fort man gör ett mellanslag så verkar det bli problem i regexpen.

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

## #4 — Peter S, 2006-01-20T10:49Z

Det borde fungera. Hur ser PHP-koden ut?

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

## #5 — renholm, 2006-01-20T19:02Z

Har denna testkod och där fungerar allt perfekt:

```
$str = "Ta buss 1337 från";
preg_match("/(Ta|till) (.+) från/", $str, $matches);

$str2 = "Den går från En station 19:23 och kommer till En hållplats ca 19:30";
preg_match("/från (\D+) (\d{2}:\d{2}) .* till (\D+) (\d{2}:\d{2})/", $str2, $matches2);

print_r($matches);
print_r($matches2);

print "\n";
print $matches2[2] . " " . $matches2[1] . "\t" . $matches[2] . "\n";
print $matches2[4] . " " . $matches2[3] . "\n";
```

Dock hämtar jag dokumentet jag vill parsa från webben och tror att det kanske blir något knas med encoding där, för koden som inte fungerar ser ut så här:

```
$dom = new DomDocument;
$dom->loadHTMLFile("http://reseplanerare.sl.se/bin/query.exe/sox?n=1&i=" . $_GET['i'] . "&co=C0-" . $_GET['c'] . "&vca");
$xp = new domxpath($dom);
$result = $xp->query("/html/body[1]/div[2]/div[1]/p[position()<last()]");

foreach($result as $r) {
	$parts = explode(".", $r->nodeValue);

	preg_match("/(Ta|till) (.+) från/", $parts[0], $matches);
	preg_match("/från (\D+) (\d{2}:\d{2}) .* till (\D+) (\d{2}:\d{2})/", $parts[1], $matches2);
	
	print_r($matches);
	print_r($matches2);
	
	print "\n";
	print $matches2[2] . " " . $matches2[1] . "\t" . $matches[2] . "\n";
	print $matches2[4] . " " . $matches2[3] . "\n";
}
```

Servern svarar i iso-8859-1 och det används även påp webbsidan som output.

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

## #6 — Gaqzi, 2006-01-22T07:16Z

Ifall du vill plocka allt innan ett specifikt tecken eller gäng tecken så brukar följande funka rätt bra.

```
/(Ta|till) ([^\s]+)/
```

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

## #7 — renholm, 2006-01-22T16:50Z

Gagzi mjo, har kört det på lite andra ställen.

Problemet är löst nu, berodde på att vissa mellanslag inte var vanliga utan \\160 vilket skapade problem när man anger \\32 mellanslagen.

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

---

Tråden på webben: https://www.webforum.nu/amne/webbutveckling/141177-problem-med-mellanslag-och-php
