2017-05-16 3 views
0

Wenn ich eine Variable in der Datenbank speichern und für variable meine ich den Namen des Variablen, zum Beispiel ich in der Datenbank speichern:Lesen Sie Variablen aus Datenbankwert

lorem ipsum dolor $var amet 

oder

lorem ipsum dolor {$var} amet 

wenn ich versuche, den Wert mit PHP aus der Datenbank zu erhalten, wird die Variable nicht ausgeführt, so dass, wenn ich versuche, den Wert drucken sie es mir zeigen:

lorem ipsum dolor $var amet 

Ich brauche, dass PHP die Var nicht als String interpretiert, aber es zeigt mir den Inhalt der Variablen. Zum Beispiel, wenn $var = "sit", wenn ich den Wert aus der Datenbank zu erhalten, zeigen sie mir:

lorem ipsum dolor sit amet 

ich nicht den Wert der Variablen direkt in der Datenbank speichern können, weil es sich um eine dynamische Variable ist. Es ist eine lang-Variable, die sich je nach der vom Benutzer gewählten Sprache ändert. Also brauche ich etwas, dass, wenn ich den Wert von der Datenbank bekomme, es überprüfen, ob es Var innerhalb gibt und wenn es eine Var ist, ändern Sie es mit seinem Wert.

+0

nein, das ist keine Sache - jedes Problem mit dem Speichern von separaten Zeilen für eindeutige Zeichenfolgen, die Sie über eine ID aufrufen können? – ThisGuyHasTwoThumbs

+0

Sie benötigen eine Funktion __curly_replacer() __ und dann die Werte in ein Array. Verwenden Sie ein Format wie '' Lorem ipsum dolor {var_name} amet'''. Die Funktion würde dann zwei Argumente annehmen, das Template und das Array. Die Funktion simple führt einen str_replace für '{' .array (i). '}' Mit den Werten aus. Ich poste es als Antwort in ein paar Minuten –

Antwort

-1

Verwenden Sie anstelle von $ var in der Zeichenfolgenverwendungsfunktion sprintf. Sie können den Code so schreiben:

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

Hier ist ein Beispiel-Script zu zeigen, wie die curly_replacer Funktion verwenden:

<?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; 
} 
?> 

Erstellen Sie ein Array von Name/Wert-Paare, die in den Vorlagen erscheinen .

Verwenden Sie in der Vorlage das Formular {var_name}, in dem die Werte ersetzt werden sollen.

+0

Hey, danke für die Antwort. Eigentlich habe ich es versucht, aber es gibt mir einen fatalen Fehler: '$ dies verwenden, wenn nicht im Objekt Kontext ' – Keaire

0

Um @ Timurs Antwort zu vereinfachen: Speichern Sie lorem ipsum dolor %s amet in Ihrer Datenbank. Dann, wenn Sie es abrufen, verwenden Sie die folgenden Schritte aus:

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

$modifiedString jetzt lorem ipsum dolor sit amet nach Ihrem Beispiel sein sollte.

Verwandte Themen