thomas: PHP-Variablen in String erkennen

Beitrag lesen

Hallo

UFF! Nun hab ichs endlich geschafft!

function getLang($lang, $id)  
{  
 mysqlConnect();  
 // Infos von der DB holen  
 $sql = "SELECT * FROM table_lang WHERE ID = $id";  
 if ( $result = mysql_query($sql) )  
 {  
  // Bei erfolgreicher MySQL-Abfrage, PHP-Variablen umwandeln  
  $row = mysql_fetch_array($result);  
  
  // schauen welche PHP-Variablen enthalten sind  
  $up_to_var = $row[$lang];  
  
  // ist noch eine Variable drin?  
  for ( $i = 0; strpos($up_to_var, "<$") !== false; $i++ )  
  {  
   // wo ist naechste Var?  
   $position = strpos($up_to_var, "<$");  
   // bis vor Var-Name abschneiden  
   $up_to_var = substr($up_to_var, ($position+5));  
   // wo ist Var fertig?  
   $position = strpos($up_to_var, ">");  
   // Var-Name extrahieren  
   $var_name = substr($up_to_var, 0, $position);  
  
   // Var-Name in ein Array packen  
   $variables[$i] = $var_name;  
  }  
  
  // nun sind alle PHP-Variablen vom String extrahiert worden  
  // es werden nun alle Variablen durch "global" in die Funktion geholt  
  foreach ( $variables as $variable )  
  {  
   eval("global \$$variable;");  
  }  
  
  // PHP-Variablen im String umwandeln  
  eval("\$string = \"$row[$lang]\";");  
  // Die Zeichen < und > entfernen  
  $string = str_replace('&lt;', '', $string);  
  $string = str_replace('&gt;', '', $string);  
  $return = $string;  
 } else {  
  $return = false;  
 }  
  
 return $return;  
}

Beispiel:

  
$name = 'Tester';  
$test_var = 'sowas!';  
print_r( getLang('fr', 2) );  

Der Eintrag in der DB lautet: "Mon nom est <$name>! Je veux vous encore dire: <$test_var>, n'est pas?"

Vielen Dank für eure Hilfe!

Lg Thomas