[PHP] Zoeken naar 'tags'

Pagina: 1
Acties:

  • Ariejan
  • Registratie: Februari 2001
  • Laatst online: 02-09 16:31
Stel, ik heb 'n template file met dit soort tags:
%title% %body% etc.

Nu heb ik 'n class met functies:
PHP:
1
2
3
4
5
6
7
<?
function title()
{
   $title = "Blah en Narf";
   return("<? echo \"$title\"; ?>");
}
?>

Hoe kan ik nu de bovengenoemde file doorzoeken, en als ik dus de tag %title% tegen kom, deze vervangen door de output van de title() functie.

dit is een simpel voorbeeld, maar er zijn ook functies die verschillende database acties uitvoeren en 'n tabel als result hebben.

ik heb gekeken naar ereg_replace (zoeken m.b.v. reguliere expr.) maar ik weet niet of dit werkt met functies etc.

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

Klaar voor een nieuwe uitdaging.


Verwijderd

PHP:
1
2
3
<?
$grotelaptext = str_replace('%title%', title(),$grotelaptext); 
?>

:?

Verwijderd

Dit doe ik nog wel slapend... toch? :P
Ariejan: Stel, ik heb 'n template file met dit soort tags: %title% %body% etc. Hoe kan ik nu de bovengenoemde file doorzoeken, en als ik dus de tag %title% tegen kom, deze vervangen door de output van de title() functie.
Perl-syntax (dus voor PCRE regexen):
code:
1
s/%\w+%/call($1)/eg;

functie call() kijkt of de string een bestaande functie is en retourneert het resultaat van de functie als dat zo is, zo niet: foutmelding of geen output.

Verwijderd

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
$bestand = '/pad/naar/bestand.ext';
$file = fopen("$bestand", r);                 // open je template file
$waar = fread($file, filesize("$bestand"));    // store je template file
fclose ($file);                                // close je template file

function vervang($wat,$waar,$met) { 

    $waar = ereg_replace("$wat","$met",$waar);
    return $waar;
   
}

$met = "De pagina titel"; 
$waar = ereg_replace("%title%","$met",$waar);

$met = "De content"; 
$waar = ereg_replace("%content%","$met",$waar);

echo "$waar";
?>

Schiet je hier misschien iets mee op :?