Avatar billede testwatest Nybegynder
08. februar 2007 - 09:26 Der er 1 kommentar

Implementering af PHP-funktioner i et templatesystem

Hvordan laver jeg lettest en funktion som laver et angivet template-tag, og derefter laver det om til en php-funktion?

Jeg har tænkt mig at inkludere diverse php-filer der hedder:

function.include.php
function.if.php
.. osv

Hvordan får jeg så lavet et script som går ind i min fil (har lavet selve templatesystemet) og ændrer fx; "{include file="test.html"}. Måske det er noget alá:

$left_delimiter = "{";
$right_delimiter = "}";

$content = str_replace("{$left_delimiter}..{$right_delimiter}, ?, $content);

og så lave nogle regulære udtryk, som kan dele det der står i mellem { og } i flere (hvis det eksisterer) nogle gange skal den jo også bare kunne forstå {if}.

Skal bare bruge lidt hjælp, kan godt programmere videre på det. Har bare ingen idé om hvordan det skal gøres, og hvordan et sådan regulært udtryk skal se ud!
Avatar billede 7th Praktikant
09. februar 2007 - 18:11 #1
Lidt til at starte med, virker måske ikke 100%, da det ikke er ordentlig testet.

// foo.htm er din template fil
if (preg_match_all('/[{]+(.+)[}]+/', file_get_contents('foo.htm'), $matches)) {
    print_r($matches);
}

Du får dog så vidt jeg kan se et nyt problem. Det er ikke nok bare at erstatte og fange indholdet mellem {}. Det skal også eksekveres som PHP. Til det kan du bruge funktionen,
http://da.php.net/manual/en/function.eval.php
Men vær påpasselig, og tjek hvor hvad kommer fra, ellers kan udefrakommende afvikle PHP igennem dit template system.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester