Array-Wert mit Variablen mittels einer Schleife belegen.

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Array-Wert mit Variablen mittels einer Schleife belegen.

    Hallo.

    Ich habe ein paar Variablen (jeweils mit anderen Sprachen) belegt. Jetzt will ich das so machen, dass das Ursprungsskript immer gleich bleibt. Ich benutze Templates und darin Smartys. Es gibt genau soviele Smartys wie es Variablen gibt. Ich möchte das jetzt mal automatisieren.

    Hie rmal ein paar Variablen in der Datei var.php:

    Quellcode

    1. $hl = 'Hallo';
    2. $hst_1 = 'Punkt1';
    3. $hst_2 = 'Punkt2';
    4. $hst_3 = 'Punkt3';
    5. $dmn_1 = 'Eins';


    Weil ich ja nicht nur die benötigten Variablen in dieser Datei habe, sondern alle Variablen (auch für andere Dateiaufrufe), muss ich mir die benötigten heraussuchen. Dazu nutze ich den String "$hst".

    Quellcode

    1. function arrayRegexSearch ( $strPattern, $arHaystack )
    2. {
    3. $arResults = array ();
    4. foreach ( $arHaystack as $strKey => $strValue )
    5. {
    6. $strHaystack = $strValue;
    7. if ( preg_match ( $strPattern, $strHaystack ) )
    8. {
    9. $arResults[] = substr($strValue, strpos ($strValue, "$hst")+1, (strpos ($strValue, "=") - 1) - strpos ($strValue, "$hst"));
    10. }
    11. }
    12. return $arResults;
    13. }
    14. $test = file('inc/de/var_de.php');
    15. $key = arrayRegexSearch ( '/hst/i', $test );
    16. $vararray = array();
    17. foreach ( $key as $strKey => $strValue ) {
    18. $vararray[$strValue] = '$'.$strValue;
    19. }
    Alles anzeigen


    Jetzt will ich aber den Array-Schlüsseln ($vararray) den jeweiligen Werten aus der Variablen-Datei zuweisen. Allerdings macht er das bei mir nicht. Bei der Ausgabe des Arrays wird zum Beispiel:

    Quellcode

    1. $vararray['hst_2'] => $hst_2

    ausgeben. Es soll aber direkt das Ergebnis ausgebene werden. Also:

    Quellcode

    1. $vararray['hst_2'] => Punkt2


    Wie stelle ich das an? Danke für eure Mühen.

    Michel
  • Ich hab das jetzt mal so gelöst:

    Quellcode

    1. function varlang ( $strPattern, $arHaystack ) {
    2. foreach ( $arHaystack as $strKey => $strValue ) {
    3. $strHaystack = $strValue;
    4. if (preg_match($strPattern, $strHaystack)) {
    5. $arResults[] = substr($strValue, strpos ($strValue, "$hst")+1, (strpos ($strValue, "=") - 2) - strpos ($strValue, "$hst"));
    6. $arResults1[] = substr($strValue, strpos ($strValue, "'")+1, (strpos ($strValue, "'") - 3) - strpos ($strValue, "'"));
    7. }
    8. }
    9. return array_combine($arResults,$arResults1);
    10. }
    11. $test = file('inc/de/var_de.php');
    12. $vararray = varlang('/hst/i', $test);
    Alles anzeigen


    Un es funktioniert. Habt ihr einen besseren Vorschlag.
  • Also erstmal danke für die Antworten.

    In meinen Templates will ich sogenannten Smartys ( z.B. <%%hst_1%%> ) mit Variablen je nach Sprache ersetzen. Ich müsste doch jetzt in jedem Skript ein Array erstellen, welche die Platzhalter und die jeweiligen Strings enthalten. Aber genau das will ich mir sparen, da ja jeder Platzhalter im Template genau dem Variablennamen entspricht. Das habe ich jetzt halt so gelöst, dass dieses Platzhalterarray automatisch erstellt wird. Vielleicht habe ich auch einen ganz anderen Denkfehler. Aber selbst wenn ich jetzt in meiner Variablendatei bereits $vararray['hst_1'] eintrage muss ich doch trotzdem das Array für die Platzhalter erstellen, oder?