---
title: "Textfiler datamining"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/165727-textfiler-datamining"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "rincewind"
published: "2007-10-22T22:26:59.000Z"
updated: "2007-10-28T21:03:23.000Z"
replies: 6
views: 526
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/165727-textfiler-datamining"
---

# Textfiler datamining

## #1 — rincewind, 2007-10-22T22:26Z

Hej,

Min chef vill att jag ska plocka ur data ur c:a 1000 st gammla text filer. Och jag gillar PHP sådärför har jag gjort lite däri.=)

Datat som ska plockas ut är datum och påbörjas med (exempelvis:)
Faktura datum: ... 13 oktober, 1996 

Och jag har lyckats läsa in text filer i en fin loop och spara undan dem i en sträng, men jag undrar om det finns någe bra sätt att leta efter alla dessa ställen och parsa ut just datumen som börjar med denna sträng så jag kan parsa om dem till en timestamp med strtotime och sedan spara undan dem på ett mer elegant sätt?=)...

Någon som vet hur man får fram just den informationen?

Mvh
 \-- Rincewind..

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

## #2 — metalboy, 2007-10-22T22:44Z

Använd preg_match_all()

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

## #3 — rincewind, 2007-10-22T22:51Z

Jo, jag hittade den nyss också, men hur skriver jag preggen?

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

## #4 — metalboy, 2007-10-22T22:55Z

Eftersom du har skrivit ... mellan "Faktura datum:" och "13 oktober, 1996" så antar jag att det finns någon text där som du inte är intresserad av. Är det korrekt?

```php
preg_match_all('/Faktura datum: .*? (\d{1,2} .*?, \d{4})/is', $text, $matches);
echo '<pre>', print_r($matches, 1), '</pre>';
```

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

## #5 — rincewind, 2007-10-22T23:00Z

hohoho.. Tack.. läckert!!

En fråga dock...

'/Faktura datum: .\*? (\\d{1,2} .\*?, \\d{4})/is'

Vad gör \\d och .\*?
och /is

\=) Försöker lära mig lite=)

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

## #6 — metalboy, 2007-10-22T23:11Z

. matchar vilket tecken som helst (nästan iaf :))
\* matchar tecknet innan 0 gånger eller fler
? matchar tecknet innan 0 eller 1 gång

.\*? betyder matcha vilket tecken som helst 0 gånger eller fler, men ta så lite som möjligt... typ. Visar med ett exempel:

```php
$text = 'Lite text. <b>Fet text</b>. <i>Kursiv text</i>. <b>Mer fet text</b>';
preg_match_all('/<b>(.*?)<\/b>/', $text, $matches1);
preg_match_all('/<b>(.*)<\/b>/', $text, $matches2);

echo '<pre>$matches1 = ', print_r($matches1, 1), '
$matches2 = ', print_r($matches2, 1), '</pre>';
```

Hoppas att du med det exemplet ser skillnaden mellan .\* och .\*?

\\d matchar en siffra (0-9)
/i betyder *Case **I**nsensitive*
/s gör så att . även matchar radbrytningar

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

## #7 — rincewind, 2007-10-28T21:03Z

Wow.. Tack metalboy för det mest suveräna svaret jag sett på länge... Tackar..

Du har inte lust att hjälpa mig med en till preg? Om man ska hitta en email adress i en stor text massa... OCH att den rad som emailadressen finns på även ska innehålla ett annat ord? 
Exempel:
Kontakt:... <email@domain.com>

Kämpat med det en stund, men totalt misslyckats ..=(

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

---

Tråden på webben: https://www.webforum.nu/amne/php/165727-textfiler-datamining
