HTML inhoud in array verplaatsen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Xaboteur X

Xaboteur X

12/04/2012 01:06:14
Quote Anchor link
Hallo allemaal,

Ik krijg een array binnen met verschillende items. Deze items zijn geformateerd als volgt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
$string = implode('', $array);
preg_match_all('/(<div class="item">)(.*)(<\/div>)/', $string, $items);
foreach($items as $item) {
   ???
}
Gewijzigd op 12/04/2012 01:07:29 door Xaboteur X
 
PHP hulp

PHP hulp

26/04/2024 17:47:34
 
Wouter J

Wouter J

12/04/2012 09:04:02
Quote Anchor link
Heb je niet de mogelijkheid om de string aan te passen? Het zou mij veel beter lijken als je zo'n array maakt:
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
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.
 
Erwin H

Erwin H

12/04/2012 09:39:53
Quote Anchor link
Is dit alles wat er in de array staat en heeft het altijd dezelfde structuur? In dat geval kan je namelijk ook heel simpel elk derde element met elk vierde omwisselen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$i
= 2;
while ( isset( $input_array[$i], $input_array[$i+1] ) ){
  $temp = $input_array[$i];
  $input_array[$i] = $input_array[$i+1];
  $input_array[$i+1] = $temp;
  $i += 5;
}



?>
Gewijzigd op 12/04/2012 11:06:28 door Erwin H
 
Robin Avoort

Robin Avoort

12/04/2012 10:27:10
Quote Anchor link
Kan je het scriptje van Erwin niet combineren met een array_search?
Zoeken naar de class (item_datum), als je die gevonden hebt, heel die regel omwisselen met de regel die daarna komt?
 
Wouter J

Wouter J

12/04/2012 10:28:08
Quote Anchor link
Erwin, je bent her en der wat $ tekens vergeten.
 
Erwin H

Erwin H

12/04/2012 11:06:06
Quote Anchor link
:-) Je hebt gelijk Wouter, even aangepast :-)
 
Xaboteur X

Xaboteur X

13/04/2012 01:59:43
Quote Anchor link
Bedankt allemaal.
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!
 



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.