PHP函数和变量存储在数据库中的字符串中

PHP函数和变量存储在数据库中的字符串中,php,string,function,eval,Php,String,Function,Eval,我需要将数据存储在数据库中,当我从数据库中获取数据时,我需要字符串中的函数和变量被计算出来 范例 $str = "<p>Dear {$this->name},</p>" 然后用名称填充变量。这正是我所需要的,效果很好 问题是我想用这个变量作为参数运行一个函数 例如。我想输入变量 我试过: $str = "<p>Dear {ucwords($this->name)},</p>" //just e

我需要将数据存储在数据库中,当我从数据库中获取数据时,我需要字符串中的函数和变量被计算出来

范例

$str = "<p>Dear {$this->name},</p>"
然后用名称填充变量。这正是我所需要的,效果很好

问题是我想用这个变量作为参数运行一个函数

例如。我想输入变量

我试过:

$str = "<p>Dear {ucwords($this->name)},</p>"  //just echoed {ucword(->name)},
$str = "<p>Dear {ucwords($this->name)},</p>"  //Fatal error: Function name must be a string,
我走的方向对吗?
这可能吗?

您不需要将PHP代码保存在数据库中。这是一种不好的做法,也可能导致安全漏洞

而是存储在数据库字符串中,如下所示:

<p>Dear [name],</p>

另一种常见的方法是使用sprintf。因此,您需要将%s作为值的占位符存储在数据库字符串中

例如:

<p>Dear %s,</p>

您不需要将PHP代码保存在数据库中。这是一种不好的做法,也可能导致安全漏洞

而是存储在数据库字符串中,如下所示:

<p>Dear [name],</p>

另一种常见的方法是使用sprintf。因此,您需要将%s作为值的占位符存储在数据库字符串中

例如:

<p>Dear %s,</p>

我发现了以下作品

如果我在类本身中包含函数,那么可以使用以下代码调用它

<p>Dear {\$this->properCase(\$this->rl_account->name)},</p>

但是我希望现在能够做到这一点,而不必像Alex Amiryan之前提到的那样让数据库拥有代码。

我发现了以下工作

如果我在类本身中包含函数,那么可以使用以下代码调用它

<p>Dear {\$this->properCase(\$this->rl_account->name)},</p>

但是我希望现在就能够做到这一点,而不必像Alex Amiryan前面提到的那样让数据库拥有代码。

您似乎想要的是一种简单的模板语言

我已经有很长一段时间没有编写PHP了,我突然想起了为什么…,但这里有一些我突然想到的东西

它应该支持对象$a->name和数组$a[name]作为输入对象

您可以在$valid\u filters中添加新的过滤器名称->函数名称映射

如何使用它:

$template = "Hello {{name:title}}, you have been selected to win {{amount}}, {{salutation:upper}}";
echo apply_template($template, array("name"=>"john", "amount" => '$500,000', "salutation" => "congratulations"));
结果是:

你好,约翰,你被选中赢得50万美元,祝贺你


您似乎在寻找一种简单的模板语言

我已经有很长一段时间没有编写PHP了,我突然想起了为什么…,但这里有一些我突然想到的东西

它应该支持对象$a->name和数组$a[name]作为输入对象

您可以在$valid\u filters中添加新的过滤器名称->函数名称映射

如何使用它:

$template = "Hello {{name:title}}, you have been selected to win {{amount}}, {{salutation:upper}}";
echo apply_template($template, array("name"=>"john", "amount" => '$500,000', "salutation" => "congratulations"));
结果是:

你好,约翰,你被选中赢得50万美元,祝贺你


你好,谢谢你的回复。问题是我将为数据库创建一个GUI。这将允许用户输入字符串中的任何变量。我的模型和相关模型有很多变量,所以这个网站很快,谢谢你的帮助。好的,问题是我不知道用户在字符串emailsay中输入了什么变量,例如,电子邮件可能有$this->name、$this->balance、$this->street。如果您正在为数据库构建UI,那么肯定不希望有PHP代码,因为这太乱了。如何向用户解释代码中有哪些变量可供评估?我建议定义可以插入到文本中的内容列表,如:[姓名],[电子邮件],[电话],等等,并使用此值构建组合框,并提供将它们插入文本的方便方式。你好,谢谢您的回复。问题是我将为数据库创建一个GUI。这将允许用户输入字符串中的任何变量。我的模型和相关模型有很多变量,所以这个网站很快,谢谢你的帮助。好的,问题是我不知道用户在字符串emailsay中输入了什么变量,例如,电子邮件可能有$this->name、$this->balance、$this->street。如果您正在为数据库构建UI,那么肯定不希望有PHP代码,因为这太乱了。如何向用户解释代码中有哪些变量可供评估?我建议定义可插入文本的内容列表,如:[姓名]、[电子邮件]、[电话]等,并使用此值构建组合框,并提供将其插入文本的方便方式。@hsz eval并非天生邪恶,但很容易被误用/过度使用。首先,tim ei使用了eval,我看不到从数据库调用动态变量的任何其他方式?@hsz eval本身并不邪恶,但它很容易被误用/过度使用。首先,tim ei使用了eval,我看不到从数据库调用动态变量的任何其他方式?
$template = "Hello {{name:title}}, you have been selected to win {{amount}}, {{salutation:upper}}";
echo apply_template($template, array("name"=>"john", "amount" => '$500,000', "salutation" => "congratulations"));