【问题标题】:PHP Variable reference inside a text value of mysql and return valuemysql的文本值内的PHP变量引用和返回值
【发布时间】:2019-07-15 19:25:10
【问题描述】:

当我从数据库接收到变量引用时,我正在尝试用它的值替换它。

示例; (存储在数据库字段中)

Hello, {$Query['name']}.<br /><br />How are u doing today?

当我收到它时数据库内的那个文本字符串,它不会用它的值替换$Query['name']。但它准确地显示了它是如何存储在数据库中的。

有没有办法,我可以在数据库中存储多个变量引用并返回它并用它的值替换变量名?

我用它来创建文本模板。

编辑: 不确定我是否解释得很好,但变量引用存储在数据库中。我正在使用 PHP 来接收它,当我这样做并回显它时,它会回显变量名称而不是该页面上定义的值。

【问题讨论】:

  • 这是什么类型的文件?
  • 您必须将变量放在
  • 只是一个 PHP 脚本
  • 例如:
  • 请记住,您不是在数据库中存储“变量”,而是在存储对变量的引用。

标签: php sql variables replace


【解决方案1】:

像这样存储在您的数据库中:

Hello, {name}.&lt;br /&gt;&lt;br /&gt;How are u doing today?

要替换值:

echo str_replace("{name}", $Query['name'], $db_string);

【讨论】:

  • 我可以用不同的名字动态地做到这一点吗?
  • 是的,值变成$Query['name']中返回的任何值
  • 我要试一试,但我的意思是,我可以将它与不同的变量名一起使用吗?
  • 我建议将允许的名称列表放入一个数组中,然后遍历该数组:foreach (['name', 'title', 'description'] as $var) { str_replace('{' . $var . '}', $Query[$var], $string); }
  • 这是个好主意,@AlexHowansky。这是为了非常简化。
【解决方案2】:

J Quest,你可以尝试使用 eval (http://php.net/manual/en/function.eval.php)

eval("\$str = \"Hello {$Query['name']}. How are u doing today?\";"); echo $str;

或者更好的是,按照 EternalHour 的建议去做

【讨论】:

  • 这给了我一个关于语法 Parse error 的 Parse 错误:语法错误,意外的 '<',期望文件在 /api.php(223 ) : eval()'d code 在第 1
【解决方案3】:

要使用现有数据,您需要强制 PHP 将 $Query['name'] 评估为变量。假设$string来自数据库:

eval('echo "'.$string.'";');
//or
eval('$string = "'.$string.'";');
echo $string;

作为使用eval 的替代方法,您可以使用简单的模板引擎方法。 如果您像这样存储数据:

Hello, {name}.<br /><br />How are u doing today?

然后只需循环 $Query 并将键替换为值:

foreach($Query as $search => $replace) {
    $string = str_replace("{{$search}}", $replace, $string);
}

str_replace 可以使用数组,但我们需要将{} 添加到键中。它们加倍 {{}} 因为它们在双引号字符串中具有特殊含义,我们需要文字字符。你也可以使用'{'.$search.'}'

【讨论】:

  • eval() 本身完成这项工作时,foreach 的附加值是多少?
  • eval 有它的位置,但如果您传入不受信任的数据,可能会非常危险。 str_replace 实际上是一种非常常见的实现模板的方法。
  • 啊,我明白了,对于foreach,我只允许使用数组$query 中的现有键,因此它们不能在我的脚本中使用不同的变量。但是你的回答对我来说不清楚的是;当我使用foreach 时,是否需要使用eval()。我不这么认为。
  • 不,我会说得更清楚。我提供了 2 种方法,str_replace 是首选,eval 以防万一您的数据库中已经充满了您无法或不想更改的数据。
【解决方案4】:

在 PHP 中,您可以使用以下命令显示变量:

Hello, <?php echo $Query['name']?>.<br /><br />How are u doing today?

【讨论】:

  • 我知道如何回显变量名并对其进行定义。我只是不知道 PHP 如何对存储在数据库中的变量名做出反应。
  • 您是说$Query 变量的值不是您所期望的吗?
  • 上面的字符串存储在数据库中,当我从数据库中回显字符串时,它会准确显示变量名称,而不是在该特定页面上定义的变量值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-27
  • 2021-05-19
相关资源
最近更新 更多