Ich habe eine Funktion namens get_variable, die den Wert einer Variablen aus der Datenbank abruft.
Nehmen wir an, der Wert meiner Variablen (in der Datenbank gespeichert) ist ungefähr so: "Ich mag $ fruit"
Ich möchte diese Zeichenfolge, mit $ fruit übersetzt in den richtigen Wert, meiner Ansicht nach weitergeben.
Ich habe folgendes eingerichtet (Pseudocode unten):
$details["fruit"] = "apples";
$details["test"] = get_variable("my_variable_name");
$var = $CI->load->view("viewname",$details,TRUE);
Das Problem ist, dass aus meiner Sicht ($ var) "Ich mag $ fruit" ausgegeben wird.
Was ich will ist "Ich mag Äpfel"
Ich habe das Gefühl, dass mir hier ein Schritt fehlt, vielleicht mit variablen Variablen? (http://php.net/manual/en/language.variables.variable.php), aber nicht sicher, wie ich es dazu bringen soll, sich zu verhalten. Jede Einsicht wäre dankbar.
Antworten:
0 für die Antwort № 1Wenn Sie sicher sind, dass die Variablen in der Datenbank sicher sind (nur Sie können sie ändern), können Sie den Code in Ihrer Funktion get variable folgendermaßen auswerten:
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);
Aber wenn die Datenbankvariablen von zugänglich sindBei anderen würden Sie eval wirklich nicht verwenden wollen (wirklich nicht!). Verwenden Sie stattdessen eine Form der Vorlage wie "Ich mag% fruit%" und lassen Sie get_variable so aussehen:
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