|
Posted by Rik on 05/28/06 19:57
Ben Allen wrote:
> Hi,
> I have a form where a user can enter different feild, for
> simplicities sake, say a 'To:', 'From' and 'Message' feild. The can
> select a 'template' from the databse, each one has different layouts,
> images etc, and is sotred as HTML code in the mySql. My question is
> how do I insert the vairables into the correct places in the
> template? I realise if it was hard-coded I could use something like:
>
> echo "To:". $to. "<br><br>". $message. "<br><br>From:". $from;
>
> etc, although this is simplified alot and the ones int databse contain
> images, tables, css etc. I don't really want to hardcode them using IF
> statements as I want it to be easy to add new 'templates'.
If you have a limited amount of variables, you could look into the
(s)printf() function.
printf('To:%1$s<br><br>%2$s<br><br>From:%3$s', $to, $message, $from);
Else, you could consider a kind of syntax of your own, like
'{{{var_name}}}'.
$to = 'Me';
$from = 'You';
$message = 'message in this case';
$string = 'To:{{{to}}}<br><br>{{{message}}}<br><br>From:{{{from}}}';
echo preg_replace('/{{{([a-zA-Z0-9_\-]*)}}}/e','$$1',$string);
I don't really like the e-modifier in this case, maybe others have a better
solution for this. Don't come knocking with eval(), that's even worse :P
Grtz,
--
Rik Wasmus
Navigation:
[Reply to this message]
|