Bestand aanpassen en parsen.
We moeten natuurlijk, het bestand kunnen aanpassen. dit gaan we doen door middel van preg_replace. we gaan de functie set maken, waarmee we {iets} kunnen veranderen in bijvoorbeeld Hallo. dit gaat door middel van de volgende code:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
public function set($pattern, $replacement) {
if($this->getfile == false) { //Kijken of het bestand al gelezen is.
$this->getfile(); //Zo niet, bestand inlezen.
}
$this->tpl = preg_replace("#\{".$pattern."\}#si", $replacement, $this->tpl); //{iets} wordt veranderd in iets.
}
?>
public function set($pattern, $replacement) {
if($this->getfile == false) { //Kijken of het bestand al gelezen is.
$this->getfile(); //Zo niet, bestand inlezen.
}
$this->tpl = preg_replace("#\{".$pattern."\}#si", $replacement, $this->tpl); //{iets} wordt veranderd in iets.
}
?>
dit is een simpele code, deze spreekt voor zich. als je niks van preg_replace snapt, kun je kijken op PHP.net: preg_replace.
natuurlijk moeten we ook het bestand nog parsen. dus de inhoud echo'en. Dit gaan we doen door middel van de volgende code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
public function parse() {
if($this->errors == '') { //Kijken of de errors leeg zijn
if($this->getfile == false) { //Als het bestand nog niet gelezen is, laten lezen.
$this->getfile();
}
return $this->tpl; //De inhoud returnen
}else{
return $this->errors; //Als er errors zijn, deze returnen.
}
}
?>
public function parse() {
if($this->errors == '') { //Kijken of de errors leeg zijn
if($this->getfile == false) { //Als het bestand nog niet gelezen is, laten lezen.
$this->getfile();
}
return $this->tpl; //De inhoud returnen
}else{
return $this->errors; //Als er errors zijn, deze returnen.
}
}
?>
de hele code is nu als volgt:
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
43
44
45
46
47
48
49
50
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
43
44
45
46
47
48
49
50
<?php
class TemplateParser {
var $file = 'start.tpl'; //Het standaard bestand, deze gebruikt hij als er geen bestand wordt opgegeven
var $errors = ''; //Hier komen de errors in
var $getfile = false; //Komt nog...
var $tpl = ''; //Komt nog...
var $blockcontent = array(); //Komt nog...
public function __construct($file = false) {
if($file != "" && $file != false) { //Kijken of $file niet leeg is.
if(!preg_match("#(.+?).tpl#si", $file)) { //Kijken of het bestand de exentie .tpl heeft
$this->errors .= "<b>TemplateParser Error:</b> Het bestand moet de exentie .tpl hebben!<br />";
}
if(!file_exists($file)) { //Kijken of het bestand bestaat
$this->errors .= "<b>TemplateParser Error:</b> het bestand ".$file." bestaat niet!<br />";
}
$this->file = $file;
}
}
public function getfile() {
if(file_exists($this->file)) { //Kijken of bestand bestaat
$this->tpl = file_get_contents($this->file); //Inhoud verkrijgen
$this->getfile = true; //Bestand is opgehaald
}
}
public function set($pattern, $replacement) {
if($this->getfile == false) { //Kijken of het bestand al gelezen is.
$this->getfile(); //Zo niet, bestand inlezen.
}
$this->tpl = preg_replace("#\{".$pattern."\}#si", $replacement, $this->tpl); //{iets} wordt veranderd in iets.
}
public function parse() {
if($this->errors == '') { //Kijken of de errors leeg zijn
if($this->getfile == false) { //Als het bestand nog niet gelezen is, laten lezen.
$this->getfile();
}
return $this->tpl; //De inhoud returnen
}else{
return $this->errors; //Als er errors zijn, deze returnen.
}
}
}
?>
class TemplateParser {
var $file = 'start.tpl'; //Het standaard bestand, deze gebruikt hij als er geen bestand wordt opgegeven
var $errors = ''; //Hier komen de errors in
var $getfile = false; //Komt nog...
var $tpl = ''; //Komt nog...
var $blockcontent = array(); //Komt nog...
public function __construct($file = false) {
if($file != "" && $file != false) { //Kijken of $file niet leeg is.
if(!preg_match("#(.+?).tpl#si", $file)) { //Kijken of het bestand de exentie .tpl heeft
$this->errors .= "<b>TemplateParser Error:</b> Het bestand moet de exentie .tpl hebben!<br />";
}
if(!file_exists($file)) { //Kijken of het bestand bestaat
$this->errors .= "<b>TemplateParser Error:</b> het bestand ".$file." bestaat niet!<br />";
}
$this->file = $file;
}
}
public function getfile() {
if(file_exists($this->file)) { //Kijken of bestand bestaat
$this->tpl = file_get_contents($this->file); //Inhoud verkrijgen
$this->getfile = true; //Bestand is opgehaald
}
}
public function set($pattern, $replacement) {
if($this->getfile == false) { //Kijken of het bestand al gelezen is.
$this->getfile(); //Zo niet, bestand inlezen.
}
$this->tpl = preg_replace("#\{".$pattern."\}#si", $replacement, $this->tpl); //{iets} wordt veranderd in iets.
}
public function parse() {
if($this->errors == '') { //Kijken of de errors leeg zijn
if($this->getfile == false) { //Als het bestand nog niet gelezen is, laten lezen.
$this->getfile();
}
return $this->tpl; //De inhoud returnen
}else{
return $this->errors; //Als er errors zijn, deze returnen.
}
}
}
?>
we kunnen de code nu al gebruiken. dat doen we door een bestand: index.tpl aan te maken. met de volgende inhoud:
we parsen dit bestand met de volgende code:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
de volgende pagina is niet belangrijk, maar wel handig. het gaat om een block functie
« vorige pagina | volgende pagina »