Ik heb een html template waarin ik variabelen heb staan tussen { } die ik met een php script wil vervangen door de waarde ervan. Het vervangen lukt niet. Wat doe ik fout?
De template is:
Het script is:
Zoals je ziet, kan het wel met str_replace (hetgeen nu uit gecommentarieerd is), maar volgens mij moet het in een keer kunnen met preg_replace.
Zoals het er nu staat wordt het resultaat "Hello name" in plaats van "Hello Henk".
Wat ik ook geprobeerd heb is preg_replace($find, eval("echo ".$repl.";", $contents)
maar dat geeft lege strings.
De template is:
HTML:
1
2
3
4
5
6
| <html><head><title>{title}</title></head> <body> <h3>Hello {name}</h3> <p>The time is: {datetime} </p> </body> </html> |
Het script is:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| <?php $contents = file_get_contents("template.html"); $title = "Titel van de pagina"; $name = "Henk"; $datetime = date("Y-d-m H:m:s"); //$contents = str_replace("{".title."}", $title, $contents); //$contents = str_replace("{".name."}", $name, $contents); //$contents = str_replace("{".datetime."}", $datetime, $contents); $find = "/{(.*?)}/"; $repl = '${1};'; $contents = preg_replace($find, $repl, $contents); echo $contents; ?> |
Zoals je ziet, kan het wel met str_replace (hetgeen nu uit gecommentarieerd is), maar volgens mij moet het in een keer kunnen met preg_replace.
Zoals het er nu staat wordt het resultaat "Hello name" in plaats van "Hello Henk".
Wat ik ook geprobeerd heb is preg_replace($find, eval("echo ".$repl.";", $contents)
maar dat geeft lege strings.