Regex of Explode

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

 - Diov  -

- Diov -

24/11/2013 20:23:43
Quote Anchor link
Beste,

Ik heb een bestand met ongeveer 10.000 volgende dingen in:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Naam: Diov
Van: 1
Naar: 2
Datum: 25-09-13 21:50
Reden: Hier de reden

Naam: Diov
Van: 2
Naar: 3
Datum: 26-09-13 11:30

Naam: Diov
Van: 2
Naar: 3
Datum: 26-09-13 11:30
Trainer: 28-09-13 11:30


Dus nu wil ik dit allemaal in een array proberen te stoppen.
Eerst had ik dus dit gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$string
= explode("\n\r", $string);
?>


Dan had ik een array met allemaal verschillende stukken, maar nu weet ik niet hoe ik verder moet.
Iemand een suggestie met welke functie?

Mvg,
Diov
 
PHP hulp

PHP hulp

22/12/2024 13:09:42
 
Koen Vlaswinkel

Koen Vlaswinkel

24/11/2013 20:57:27
Quote Anchor link
Je kan het exploden op de dubbele newline en dan parsen als Yaml, aangezien dit valide Yaml is. (Voor deze snippet heb je wel Symfony Yaml nodig.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?php
$string
= explode("\n\n", str_replace("\n\r", "\n", $string));
$data = array();
foreach ($string as $str) {
    $data[] = Symfony\Component\Yaml\Yaml::parse($str);
}


// output
print_r($data);
/*

Array
(
    [0] => Array
        (
            [Naam] => Diov
            [Van] => 1
            [Naar] => 2
            [Datum] => 25-09-13 21:50
            [Reden] => Hier de reden
        )

    [1] => Array
        (
            [Naam] => Diov
            [Van] => 2
            [Naar] => 3
            [Datum] => 26-09-13 11:30
        )

    [2] => Array
        (
            [Naam] => Diov
            [Van] => 2
            [Naar] => 3
            [Datum] => 26-09-13 11:30
            [Trainer] => 28-09-13 11:30
        )

)
*/

?>
Gewijzigd op 24/11/2013 21:03:18 door Koen Vlaswinkel
 
Wouter J

Wouter J

24/11/2013 23:17:05
Quote Anchor link
Ik gok dat dit sneller is:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$data
= array();
$fragments = preg_split('/\R/', $string);

foreach ($fragments as $fragment) {
    $d = array();
    $lines = preg_split('/\R/', $fragment);
    foreach ($lines as $line) {
        list($key, $value) = explode(':', $line, 2);
        $d[trim($key)] = trim($value);
    }

    $data[] = $d;
}
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.