Php 从数据库值读取变量

Php 从数据库值读取变量,php,mysql,variables,Php,Mysql,Variables,当我在数据库中存储变量时,对于变量,我指的是变量的名称,例如,我在数据库中存储: lorem ipsum dolor $var amet 或 当我尝试使用PHP从数据库获取值时,变量不会执行,因此当我尝试打印值时,它会显示: lorem ipsum dolor $var amet lorem ipsum dolor sit amet 我需要PHP不会将变量解释为字符串,但它会显示变量的内容。例如,如果$var=“sit”,当我从数据库获取值时,它会显示: lorem ipsum dolor

当我在数据库中存储变量时,对于变量,我指的是变量的名称,例如,我在数据库中存储:

lorem ipsum dolor $var amet

当我尝试使用PHP从数据库获取值时,变量不会执行,因此当我尝试打印值时,它会显示:

lorem ipsum dolor $var amet
lorem ipsum dolor sit amet
我需要PHP不会将变量解释为字符串,但它会显示变量的内容。例如,如果
$var=“sit”
,当我从数据库获取值时,它会显示:

lorem ipsum dolor $var amet
lorem ipsum dolor sit amet

我不能将变量的值直接存储在数据库中,因为它是一个动态变量。它是一个lang变量,根据用户选择的语言而变化。所以我需要一些东西,当我从数据库中获取值时,它会检查里面是否有var,是否有var,并用它的值来更改它。

在字符串使用函数中使用而不是$var。 您可以这样编写代码:

sprintf('lorem ipsum dolor %s amet' $var);

下面是一个示例脚本,演示如何使用curly_replacer函数:

<?php

//  Load array with values:
$lang_str = array(
    'name' => 'namo',
    'another' => 'something else',
    'something' => 'another string'
);

//  Create a template
$tmpl = 'lorem ipsum {name} dolor {another} ipsum {something}';

echo "<p>Template: " . $tmpl . "</p>\n";
echo "<p>Results: " . curly_replacer($tmpl,$lang_str);

function curly_replacer($content = '', $data = array(), $exploder = '.', $replace_null = false){
    preg_match_all('/{([^(}|{| )]*?)}/i', $content, $curly_matches);
    if(isset($curly_matches[1]) && !empty($curly_matches[1])){
        foreach($curly_matches[1] as $match){
            $value = $this->get_array_value($data, explode($exploder, $match));
            if(!is_null($value)){
                if(is_array($value)){
                    $content = str_replace("{".$match."}", var_export($value, true), $content);
                }else{
                    $content = str_replace("{".$match."}", $value, $content);
                }
            }else{
                if($replace_null === true){
                    $content = str_replace("{".$match."}", '', $content);
                }
            }
        }
    }
    return $content;
}
?>

创建可能出现在模板中的名称/值对数组


在模板中,使用希望替换值的形式
{var_name}

简化@Timur的答案: 将lorem ipsum dolor%s amet保存到数据库中。然后,在检索时,请使用以下命令:

$stringFromDB = **code to get string from db**;
$modifiedString = sprintf($stringFromDB, $var);

$modifiedString
现在应该是
lorem ipsum dolor sit amet

不,这不是问题-为可以通过id调用的唯一字符串存储单独的行有任何问题吗?您需要一个函数curly_replacer(),然后将值放入数组中。使用类似于
lorem ipsum dolor{var_name}amet
的格式。然后,该函数将接受两个参数:模板和数组。函数simple用值替换“{”.array(i)。“}”。我会在几分钟后把它作为一个答案发布。嘿,谢谢你的回答。实际上我试过了,但它给了我一个致命的错误:
在不在对象上下文中时使用$this