Le moteur de model – regex, DOMDocument et xpath ou autre chose?

Je pensais à la meilleure façon d'parsingr des templates avec PHP en créant un moteur de model. Les templates peuvent contenir HTML, CSS et JavaScript – mais pas de code PHP. Je sais, il y a beaucoup de moteurs là-bas … mais je veux essayer de build mon propre.

Voici un exemple de file model simple.

<!DOCTYPE html> <html> <head> <title>{printtitle/}</title> <head> <body> {hello atsortingbute="world"/} <!-- template tags could contain atsortingbutes --> <!-- written as below should return the div within the tags. --> {innerhtml} <div class="someclass">Some content</div> {/innerhtml} </body> </html> 

J'ai lu et vu des exemples sur la façon d'parsingr avec succès les tags de model comme ceux ci-dessus avec des expressions régulières. Mais, la lecture des commentaires sur ces solutions m'a fait penser que les expressions régulières pour créer un simple moteur de model personnalisé ne sont pas le path à parcourir. Mais je n'ai jamais compris la raison pour cela. Trop lent?

Je ne suis pas très familier avec DOMDocument et Xpath. Mais est-ce une approche plus moderne pour parsingr les templates HTML comme dans l'exemple ci-dessus?

J'apprends quelques éclaircissements pour me faire choisir le bon path ici.

Vous créez un format / langue de document personnalisé, de sorte que DOMDocument, Xpath ou d'autres parsingurs prédéfinis sont hors de question. La réponse dépend de vos besoins.

Si votre langage de model suffit de replace les marqueurs de templates par des valeurs et ne permet pas l'imbrication , les expressions régulières seront simples à mettre en œuvre et fonctionnent bien.

Si vos templates auront quelque chose de plus élaboré, comme les loops, les appels de fonctions ou l'imbrication, vous voudrez définir formellement vos règles avec un lexer, comme Phlexy .