login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Opgelost]Waarden in array tussenvoegen

Offline Crazed - 08/08/2006 20:38 (laatste wijziging 09/08/2006 10:35)
Avatar van CrazedPHP interesse Ik ben bezig met een template-script, maar stuit daarbij op een probleem.

Hij controleert dus elke regel van m'n template op de code om blokken in te voegen. Dit gebeurt zoals in TemplatePower met commentaren. Alles gaat goed, behalve bij het stukje om headers en footers in te voeren (een soort block die je slechts 1x nodig hebt dus).

Als daar een block instaat, wordt deze niet meegenomen. De reden hiervoor heb ik al gevonden, want wat ingevoegd wordt, wordt gewoon niet gecontroleerd (zie code).

Het zou kunnen werken door het bestand tussen de reeds bestaande array te voegen, maar ik weet niet goed hoe ik dat moet doen. Ik vond op php.net niet meteen een functie die dit kon. Heeft iemand daar weet van?

mss dat wat code duidelijker is:
  1. <?php
  2. function _preparefile($file, $blockname)
  3. {
  4. $tempfile = file($file); // Sla de inhoud van het bestand op in $tempfile
  5. $this->blox[$blockname] = Array();
  6. $i = 0;
  7. while($tempfile[$i]) // controleer elke regel
  8. {
  9. if(preg_match('/<!--[ ]?(START|END|INCLUDE) (BLOCK|FILE): (.+)-->/', $tempfile[$i], $regs))
  10. {
  11. $regs[3] = trim($regs[3]);
  12.  
  13. if($regs[1] == 'INCLUDE' && $regs[2] == 'FILE') // include bestand eenmalig
  14. {
  15. $this->blox[$blockname] = array_merge($this->blox[$blockname], file($regs[3])); // Dit moet worden vervangen door een code die file($regs[3]) tussen $tempfile duwt.
  16. }
  17. ?>


Citaat:
Opmerking door Haytjes
Waarom sluit je niet alle accolades?

2 antwoorden

Gesponsorde links
Offline Wim - 08/08/2006 23:33 (laatste wijziging 09/08/2006 01:31)
Avatar van Wim Crew algemeen
  1. <?php
  2. function _preparefile($file, $blockname)
  3. {
  4. $tempfile = file($file); // Sla de inhoud van het bestand op in $tempfile
  5. $this->blox[$blockname] = Array();
  6. $i = 0;
  7. while($tempfile[$i]) // controleer elke regel
  8. {
  9. if(preg_match('/<!--[ ]?(START|END|INCLUDE) (BLOCK|FILE): (.+)-->/', $tempfile[$i], $regs))
  10. {
  11. $regs[3] = trim($regs[3]);
  12.  
  13. if($regs[1] == 'INCLUDE' && $regs[2] == 'FILE') // include bestand eenmalig
  14. {
  15. // hier de functie __preparefile terug aanroepen met de correcte waardes ($file en $blockname invullen dus).
  16. $this->blox[$blockname] = array_merge($this->blox[$blockname], file($regs[3])); // Dit moet worden vervangen door een code die file($regs[3]) tussen $tempfile duwt.
  17. }
  18. ?>


De functie zal zich dan blijven herhalen tot elk blok aan de beurt geweest is... (regel 15)
Offline Crazed - 09/08/2006 10:35
Avatar van Crazed PHP interesse Het is gelukt, mits het weghalen van die array_merge en het invoeren van een kenteken voor een nieuwe block.

Hartelijk bedankt, mag voor mijn part een slotje op.


@Haytjes: De accolades zijn niet allemaal gesloten omdat het slechts een stukje code is dat ik gecopy-paste heb. In werkelijkheid komen er nog een goede 30 lijnen code na, die onbelangrijk waren voor deze vraag.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.355s