2013-04-20 92 views
0

我有一个名为get_variable的函数,它从数据库中获取一个变量的值。如何解析CodeIgniter视图内的字符串中的变量?

比方说,我的变量(存储在数据库)的值是一样的东西:“我喜欢$果”

我想通过这个字符串,$果转化为正确的值,上我的看法。

我有以下设置(如下伪代码):

$details['fruit'] = 'apples'; 
$details['test'] = get_variable('my_variable_name'); 

$var = $CI->load->view('viewname',$details,TRUE); 

问题是什么,我认为($ VAR)的输出是“我喜欢$果”

我想要什么是“我喜欢苹果”

我觉得我在这里错过了一个步骤,也许与变量变量? (http://php.net/manual/en/language.variables.variable.php),但不知道如何让它表现。任何洞察力将不胜感激。

+0

你能发布您的视图代码吗? – 2013-04-20 17:09:44

回答

0

如果您确定在数据库中的变量是安全的(只有你可以改变它们),你可以EVAL像这样的GET变量函数的代码:

function get_variable($var, $data = array()) 
{ 
    // Here the code that gets the variable from the database 
    $db_var = 'I like $fruit'; 
    extract($data); 

    $return = ''; 
    eval('$return = "' . $db_var . '"'); 

    return $return; 
} 

// And then use this in the controller: 
$details['test'] = get_variable('my_variable_name', $details); 

但是,当数据库变量访问由其他人,你真的不想使用eval(真的不!)。而是使用某种形式的模板,如“我喜欢%fruit%”,并使get_variable看起来像这样:

function get_variable($var, $data = array()) 
{ 
    // Here the code that gets the variable from the database 
    $db_var = 'I like $fruit'; 
    extract($data); 

    $return = $db_var; 
    foreach($data as $var => $value) { 
    $return = str_replace('%'.$var.'%', $value, $return); 
    } 

    return $return; 
} 

// And then use the same method in the controller: 
$details['test'] = get_variable('my_variable_name', $details); // This makes all variables in details available in the database variable