Regex of Explode
Ik heb een bestand met ongeveer 10.000 volgende dingen in:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
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:
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
Symfony Yaml nodig.
Je kan het exploden op de dubbele newline en dan parsen als Yaml, aangezien dit valide Yaml is. (Voor deze snippet heb je wel Code (php)
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
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
)
)
*/
?>
$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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
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;
}
$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;
}