Scripts
template parser
Hier mijn template parser. Hij is erg simpel en opzich makkelijk te begrijpen en maar 5 kb groot is:) uitleg is er nog niet maar een voorbeeld wel. Ik denk dat je hier dan al een eindje mee komt:) Tot dan srry dat er nog geen echte uitleg bij zit. Als er toch vragen zijn stel ze gerust en ik of iemand anders probeert je te helpen Graag als er fouten inzitten of dingen die beter kunnen laat dat dan even weten voorbeeld: header.TPL footer.TPL header.php footer.php index.php zal tonen in broncode dit: heb het zo gedaan dat je already send errors ken vermijden include je de header op de juiste plek. De andere functie's zal ik later voorbeelden van geven. Maar hiermee zou je dus al je pagina geparst kunnen tonen maar nog niet met while lusjes
template-parser
PARSER.class.php
<?php
error_reporting(E_ALL);
// PARSER.class.php
// Gemaakt door: Mebus Van Gorkum
// Script is getest met usbwebserver, PHP versie 5 maar script zou ook makkelijk moeten werken op php 4
// Versie 1
class PARSER {
var $ext = FALSE; // Hoeft nu geen extensie achter template bestand gezet te worden
var $extension = '.TPL'; // Moet ingevult worden wanneer $ext op FALSE staat
var $place = 'templates/'; // Plek waar de template's zich bevinden
var $template = array();
var $part = array();
var $parts = array();
var $parsed = array();
var $times = array();
function gettemp($file, $naam = NULL, $weg = NULL) { // Template bestand ophalen
if(empty($weg)) {
if($this->ext) {
$path = $this->place.$file;
} else {
$path = $this->place.$file.$this->extension;
}
} else {
if($this->ext) {
$path = $this->place.$weg.'/'.$file;
} else {
$path = $this->place.$weg.'/'.$file.$this->extension;
}
}
if(file_exists($path)) {
$fp = fopen($path,'r');
if(empty($naam)) {
while(!feof($fp)){
@$this->template[$file]['content'] .= fgets($fp,4096);
}
} else {
while(!feof($fp)){
@$this->template[$naam]['content'] .= fgets($fp,4096);
}
}
fclose($fp);
}
}
function fuse($fuse, $naam) { // Twee verschillende template's met elkaar samen laten smelten
if(!empty($fuse) && !empty($naam)) {
$this->template[$naam]['content'] = str_replace('{FUSE:'.$fuse.'}', $this->templates[$fuse]['content'], $this->template[$naam]['content']);
}
}
function getpart($naam, $sub) { // Stukje pakken wat herhaalt moet worden
preg_match('/\{SUB:'.$sub.'\}(.*?)\{\/SUB:'.$sub.'\}/si', $this->template[$naam]['content'], $matches);
$this->part[$naam][$sub]['content'] = $matches[0];
}
function parse($naam, $variable, $value, $sub = NULL) { // Alle waarden parsen
if(!empty($sub)) {
$stukjesvar = explode('+=+', $variable);
$stukjesval = explode('+=+', $value);
$countvar = count($stukjesvar);
$countval = count($stukjesval);
if($countvar == $countval) {
if(empty($this->times[$naam][$sub]['times'])) {
$this->times[$naam][$sub]['times'] = 1;
} else {
$this->times[$naam][$sub]['times'] = $this->times[$naam][$sub]['times'] + 1;
}
for($i = 0; $i <= $countval - 1; $i++) {
if($i == 0) {
$this->parts[$naam][$sub][$this->times[$naam][$sub]['times']]['content'] = str_replace('{'.$sub.':'.$stukjesvar[$i].'}', $stukjesval[$i], $this->part[$naam][$sub]['content']);
} else {
$this->parts[$naam][$sub][$this->times[$naam][$sub]['times']]['content'] = str_replace('{'.$sub.':'.$stukjesvar[$i].'}', $stukjesval[$i], $this->parts[$naam][$sub][$this->times[$naam][$sub]['times']]['content']);
}
}
}
} else {
$this->template[$naam]['content'] = str_replace('{'.$variable.'}', $value, $this->template[$naam]['content']);
}
}
function sub($naam, $sub) { // Restanten weghalen
if(!empty($this->times[$naam][$sub]['times'])) {
if($this->times[$naam][$sub]['times'] == 1) {
$this->parsed[$naam][$sub]['content'] = $this->parts[$naam][$sub][$this->times[$naam][$sub]['times']]['content'];
} else {
for($i = 1; $i < $this->times[$naam][$sub]['times']; $i++) {
$this->parsed[$naam][$sub]['content'] = $this->parts[$naam][$sub][$i]['content'].$this->parts[$naam][$sub][$i + 1]['content'];
}
}
$this->parsed[$naam][$sub]['content'] = str_replace('{SUB:'.$sub.'}', '', $this->parsed[$naam][$sub]['content']);
$this->parsed[$naam][$sub]['content'] = str_replace('{/SUB:'.$sub.'}', '', $this->parsed[$naam][$sub]['content']);
$this->template[$naam]['content'] = str_replace($this->part[$naam][$sub]['content'], $this->parsed[$naam][$sub]['content'], $this->template[$naam]['content']);
}
}
function display($naam) { // Geparste template tonen
echo $this->template[$naam]['content'];
}
}
?>
Reacties
0