HTML inhoud in array verplaatsen
Ik krijg een array binnen met verschillende items. Deze items zijn geformateerd als volgt:
Code (php)
1
2
3
4
5
2
3
4
5
<div class="item">
<div class="item_titel">Titel1</div>
<div class="item_datum">Datum1</div>
<div class="item_inhoud">Inhoud1</div>
</div>
<div class="item_titel">Titel1</div>
<div class="item_datum">Datum1</div>
<div class="item_inhoud">Inhoud1</div>
</div>
De array die ik binnenkrijg, ziet er als volgt uit:
Array
(
[0] => <div class="item">
[1] => <div class="item_titel">Titel1</div>
[2] => <div class="item_datum">Datum1</div>
[3] => <div class="item_inhoud"><p>Inhoud1</p></div>
[4] => </div>
[5] => <div class="item">
[6] => <div class="item_titel">Titel2</div>
[7] => <div class="item_datum">Datum2</div>
[8] => <div class="item_inhoud"><p>Inhoud2</p></div>
[9] => </div>
[10] => <div class="item">
[11] => <div class="item_titel">Titel3</div>
[12] => <div class="item_datum">Datum3</div>
[13] => <div class="item_inhoud"><p>Inhoud3</p></div>
[14] => </div>
)
Alles onder elkaar dus...
Nu is mijn vraag: Hoe kan ik voor ieder Item de datum verplaatsen naar onder de inhoud?
Ik heb al geprobeerd om een preg_match_all() uit te voeren op een string (implode()) van de array, maar daar kom ik niet ver mee.
Code (php)
1
2
3
4
5
2
3
4
5
$string = implode('', $array);
preg_match_all('/(<div class="item">)(.*)(<\/div>)/', $string, $items);
foreach($items as $item) {
???
}
preg_match_all('/(<div class="item">)(.*)(<\/div>)/', $string, $items);
foreach($items as $item) {
???
}
Gewijzigd op 12/04/2012 01:07:29 door Xaboteur X
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Array
(
[0] => Array
(
[start] => '<div class="item">',
[0] => '<div class="item_titel">Titel1</div>',
[1] => '<div class="item_datum">Datum1</div>',
[2] => '<div class="item_inhoud"><p>Inhoud1</p></div>',
[end] => '</div>',
),
[1] => Array
(
...
),
)
(
[0] => Array
(
[start] => '<div class="item">',
[0] => '<div class="item_titel">Titel1</div>',
[1] => '<div class="item_datum">Datum1</div>',
[2] => '<div class="item_inhoud"><p>Inhoud1</p></div>',
[end] => '</div>',
),
[1] => Array
(
...
),
)
Dan kun je makkelijk even date naar achter halen.
Zoeken naar de class (item_datum), als je die gevonden hebt, heel die regel omwisselen met de regel die daarna komt?
Erwin, je bent her en der wat $ tekens vergeten.
:-) Je hebt gelijk Wouter, even aangepast :-)
Het zou inderdaad een stuk makkelijker geweest zijn met een meerdimensionale array, maar dit kon ik dus niet instellen.
Bedankt Erwin, en bedankt Robin, voor de tip!