/ / Wie analysiere ich eine Variable in einem String in einer CodeIgniter-Ansicht? - php, codeigniter, templates, variable zuweisung

Wie parse ich eine Variable in einer Zeichenfolge in einer CodeIgniter-Ansicht? - PHP, Codeigniter, Vorlagen, Zuweisung von Variablen

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 № 1

Wenn 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