---
title: "Ta ut viss data"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/103676-ta-ut-viss-data"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "cmk"
published: "2004-05-15T11:54:53.000Z"
updated: "2004-05-17T21:52:10.000Z"
replies: 11
views: 369
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/103676-ta-ut-viss-data"
---

# Ta ut viss data

## #1 — cmk, 2004-05-15T11:54Z

Jag har en variabel som innehåller en koden till en HTML-sida. Ur denna vill jag plocka ur viss data. Måste man använda regujära uttryck för detta? I stort sätt ser filen ut så här:

```php
<td>Datum: 040404</td>
```

Det jag vill ha ut är självklart själva datumet, 040404.

Hur löser man det smidigast?

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

## #2 — Matte, 2004-05-15T12:12Z

```php
preg_match_all("/\\d{6}/", $var, $matches);
```

 
Sen har du dina datum i arrayen $matches\[0\].

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

## #3 — Matte, 2004-05-15T12:15Z

Det var från en htmlsida sa du. Då har du säkert många färgkoder.

Testa istället:

```php
preg_match_all("/<td>Datum: (\\d{6})<\\/td>/", $var, $matches);
```

 
Hämta istället från arrayen $matches\[1\].

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

## #4 — cmk, 2004-05-15T12:23Z

Oj... jag var kanske lite otydlig. Filen innehåller inte enbart datum utan ser snarare ut så här (plus lite färgkoder och liknande som du nämnde Matte):

```
<td>Datum</td>
<td>:</td>
<td>040506</td>

<td>Plats</td>
<td>:</td>
<td>Webforum :)</td>

<td>kommentar</td>
<td>:</td>
<td>hej hopp... här kan det stå en söt liten kommentar :-)</td>

osv...
```

Totalt är det 8st olika data som jag vill plocka ut. Hoppas jag var lite tydligare denna gången :)

/ Martin

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

## #5 — Matte, 2004-05-15T13:20Z

Ser det likadant ut på alla ställen som där borde det funka med:

```php
preg_match_all("/<td>(\\d{6})<\\/td>/", $var, $matches);
```

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

## #6 — cmk, 2004-05-15T13:30Z

> **Matte skrev:**
>
> Ser det likadant ut på alla ställen som där borde det funka med:
>
>
> ```php
> preg_match_all("/<td>(\\d{6})<\\/td>/", $var, $matches);
> ```

Men denna funktionen matchar enbart datum väl? Om du kollar in exemplet ovan så vill jag kunna få ut både datum, plats och kommentar.

Jag har funderat lite och kommit fram till följande. Kan man inte söka efter tex "\<td\>Kommentar:" och sedan kopiera in alla tecken efter detta fram till och med te.x. "\</td\>". Så man anger ett startvärde och ett slutvärde och kopierar allt därimellan liksom :)

/ Martin

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

## #7 — Matte, 2004-05-15T13:44Z

Missade att du ville ha mer än datum :)

Testa det här:

```php
$pattern = "/<td>Datum<\\/td>\\s+<td>:<\\/td>\\s+<td>(\\d{6})<\\/td>\s+";
$pattern .= "<td>Plats<\\/td>\\s+<td>:<\\/td>\\s+<td>(.*?)<\\/td>\s+";
$pattern .= "<td>kommentar<\\/td>\\s+<td>:<\\/td>\\s+<td>(.*?)<\\/td>/is";
preg_match_all($pattern, $var, $matches, PREG_SET_ORDER);

foreach ($matches as $row) {
   echo "$row[1] - $row[2] - $row[3] <br>";
}
```

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

## #8 — cmk, 2004-05-15T14:53Z

> **Matte skrev:**
>
> Missade att du ville ha mer än datum :)
> 
> Testa det här:
>
>
> ```php
> $pattern = "/<td>Datum<\\/td>\\s+<td>:<\\/td>\\s+<td>(\\d{6})<\\/td>\s+";
> $pattern .= "<td>Plats<\\/td>\\s+<td>:<\\/td>\\s+<td>(.*?)<\\/td>\s+";
> $pattern .= "<td>kommentar<\\/td>\\s+<td>:<\\/td>\\s+<td>(.*?)<\\/td>/is";
> preg_match_all($pattern, $var, $matches, PREG_SET_ORDER);
> 
> foreach ($matches as $row) {
>    echo "$row[1] - $row[2] - $row[3] <br>";
> }
> ```

\*Hmmmmm\* Borde inte koden nedan fungera då?

```php
<?php
$var = "<td>Datum</td>
		<td>:</td>
		<td>050607</td>
		
		<td>Plats</td>
		<td>:</td>
		<td>webforum</td>
		
		<td>kommentar</td>
		<td>:</td>
		<td>hej</td>";

$pattern = "/<td>Datum<\/td>\s+<td>:<\/td>\s+<td>(\d{6})<\/td>s+";
$pattern .= "<td>Plats<\/td>\s+<td>:<\/td>\s+<td>(.*?)<\/td>s+";
$pattern .= "<td>kommentar<\/td>\s+<td>:<\/td>\s+<td>(.*?)<\/td>/is";
preg_match_all($pattern, $var, $matches, PREG_SET_ORDER);

echo "BOF";

foreach ($matches as $row) {
   echo "$row[1] - $row[2] - $row[3] <br>";
}

echo "EOF";

?>
```

 ...eller har jag gjort något fel? Det var ett tag sedan jag pillade med PHP nu :)

Det enda som skrivs ut är "BOFEOF"  x(

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

## #9 — Matte, 2004-05-15T18:49Z

Missade att dubbelmarkera några tecken som forumet strippar, så här skulle det vara:

```php
$pattern = "/<td>Datum<\\/td>\\s+<td>:<\\/td>\\s+<td>(\\d{6})<\\/td>\\s+";
$pattern .= "<td>Plats<\\/td>\\s+<td>:<\\/td>\\s+<td>(.*?)<\\/td>\\s+";
$pattern .= "<td>kommentar<\\/td>\\s+<td>:<\\/td>\\s+<td>(.*?)<\\/td>/is";
preg_match_all($pattern, $var, $matches, PREG_SET_ORDER);

foreach ($matches as $row) {
   echo "$row[1] - $row[2] - $row[3] <br>";
}
```

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

## #10 — cmk, 2004-05-17T14:56Z

Fungerade jättebra! :)

En liten undran bara... vad står "\\s+" för?

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

## #11 — Skarre, 2004-05-17T15:28Z

> **cmk skrev:**
>
> En liten undran bara... vad står "\\s+" för?

<http://se2.php.net/pcre.pattern.syntax>

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

## #12 — Matte, 2004-05-17T21:52Z

> **cmk skrev:**
>
> Fungerade jättebra! :)
> 
> En liten undran bara... vad står "\\s+" för?

\\s betyder "space"-tecken typ mellanslag, tab eller radbrytning.
\+ säger ett eller flera.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/103676-ta-ut-viss-data
