PHP template parsing

Status
Niet open voor verdere reacties.

JVermolen

Gebruiker
Lid geworden
28 jun 2011
Berichten
7
Beste iedereen,

Ik wil voor een site die ik maak een templateparser bouwen, k weet alleen even niet meer hoe ik verder moet.

Het is namelijk zo dat ik een grote template file heb, waar meerdere onderdelen in staan.

Dit is bijvoorbeeld mijn template file:
HTML:
<!-- ###login### begin -->
###errormessages###
<form method="post" action="?action=login&attempts=###loginattempts###">
    <table>
    	<tr>
        	<td>###username###:</td>	
             <td><input type="text" name="username" /></td>
         </tr>
         <tr>
         	<td>###Password###:</td>
            <td><input type="password" name="password" /></td>
         </tr>
         <tr><td colspan="2" align="right"><input type="submit" name="Inloggen" value="###loginsubmit###" /></td></tr>
    </table>
</form>
<!-- ###login### end -->

<!-- ###errormessages### begin -->
	<div id="error">###errormessage###</div>
<!-- ###errormessages### begin -->

Nu wil ik dat alles tussen de <!-- ###login### --> tags als basistemplate tevoorschijn komt, en dat ondertussen de overige tags, bijvoorbeeld ###username###, word vervangen door een taalstring uit een XML file, de errormessages moeten verschijnen, als deze er zijn en de ###loginattemps### moet uit een ander script komen, en ik weet dus ook niet of je daar onderscheid in kan maken.

Het is wel zo dat ik een template parser per onderdeel van het systeem ga maken, zodat het lichter word, omdat het ook voor mobiel beschikbaar moet zijn.

Als je het zou willen uitprogrammeren is dat helemaal toppie, maar dat hoeft niet van mij. Wil je eerst de originele php file zien? laat het me even weten!

Vanaf maandag (18-7) ben ik wel 2 weken op vakantie dus dan reageer ik niet echt veel meer, maar het geeft je wel lekker de tijd om erover na te denken!

groetjes en alvast bedankt!
 
Laatst bewerkt:
Zelf heb ik net een template class geschreven dat is het volgende:

PHP:
<?php
class Template{
	protected $file;
	protected $values = array();
	
	public function __construct($file){
		$this->file = $file;
	}
	
	public function set($key, $value){
		$this->values[$key] = $value;
	}
	
	public function output(){
		if(!file_exists($this->file)){
			return "Error loading template file ($this->file).<br/>";
		}
		$output = file_get_contents($this->file);
		
		foreach($this->values as $key => $value){
			$tag = "{@$key}";
			$output = str_replace($tag, $value, $output);
		}
		
		return $output;
	}
}
?>

Best basic en overal online te vinden maar het werkt
 
Bedankt dat je een antwoord hebt gegeven, maar helaas gaat dat niet werken, omdat dat script geldt voor een heel bestand, en niet voor een deel.

Bovendien moet dat script dus ook nog uitzoeken of het om een link gaat, of om een 'taalstring', of iets dergelijks.

Helaas, volgende keer beter!
 
Waarom zou je <!-- ###login### --> niet veranderen?
dan heb je geen probleem niet str_replace
Of je veranderd de tag voor de strings bv ipv ###login### dat je {LOGIN} gebruikt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan