m²: Variable in string einsetzen

hallo.
ich habe ein Problem mit folgender Ausgangssituation:
ich habe zwei strings:

$string="[name] ist dein Name.";

$name="Paul";

was herauskommen soll:

"Paul ist dein Name."

ich bin schon mit preg_replace am gange, heraus kommt da folgender string:

"$name ist dein Name."

aber das hilft mit leider auch nicht viel weiter...

wie kann ich es erreichen, dass der name Paul bei $name eingesetzt wird?
wichtig: das ganze muss dynamisch sein, das soll praktisch für jede variable funktionieren, z.b. "der [heute] ist ein schöner [tag_name]".

wenn mir irgendwie geholfen werden kann ;)
ich bitte darum :)


PS: Guten Rutsch!

  1. Hallo m².

    ich habe zwei strings:

    $string="[name] ist dein Name.";

    $name="Paul";

    wie kann ich es erreichen, dass der name Paul bei $name eingesetzt wird?
    wichtig: das ganze muss dynamisch sein, das soll praktisch für jede variable funktionieren, z.b. "der [heute] ist ein schöner [tag_name]".

    Meine Empfehlung: verwende ein Array.
    Dort kannst du die Bezeichner selbst wählen, so z. B.:

    $replacements = array (  
    'vname' => 'Max',  
    'name' => 'Mustermann'  
    );
    

    Dann kannst du darauf ganz einfach mittels foreach-Schleife zugreifen und mittels str_replace (ein regulärer Ausdruck ist hier überflüssig und vergeudet nur Performance) deinen gewünschten String zugreifen:

    $string = 'Hallo [vname] [name]!';  
      
    foreach ($replacements as $from => $to) {  
      $string = str_replace('['.$from.']', $to, $string);  
    }  
      
    echo $string;
    

    Einen schönen Samstag noch.

    Gruß, Ashura

    --
    Last Tears Keep Calling
    See Angels Falling
    Black Shadows In Your Head
    And One Eye For The Dead
    1. hallo nochmal,
      ich habe eine Lösung, falls das interessiert:

        
      function prozess_vars($string) {  
        
        foreach ($_REQUEST as $var_name => $var_value) {  
          echo $var_name.": ".$var_value."<br>";  
          $string = str_replace("[".$var_name."]", $var_value, $string);  
        }  
        
        return $string;  
      }  
        
      
      

      damit geht es für jede definierte variable.
      vielen dank für eure hilfe, auch wenn ich mir die lösung selbst gebastelt hab ;)

  2. Hallo

    hallo.
    ich habe ein Problem mit folgender Ausgangssituation:
    ich habe zwei strings:

    $string="[name] ist dein Name.";

    $name="Paul";

    was herauskommen soll:

    "Paul ist dein Name."

      
    <?php  
    $name = "Paul";  
      
    $string = $name." ist dein Name.";  
      
    echo "<p>".$string."</p>";  
    // Ausgabe "Paul ist dein Name"  
    ?>  
    
    

    Dazu brauchts keine regulären Ausdrücke, auch wenn das grundsätzlich auch so machbar ist. Wenn es denn unbedingt ein regulärer Ausdruck sein soll, solltest du deinen hier auch mal herzeigen, um zu schauen, was an deiner Herangehensweise falsch sein könnte.

    PS: Guten Rutsch!

    dito

    Tschö, Auge

    --
    Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
    (Victor Hugo)
    Veranstaltungsdatenbank Vdb 0.1
    1. Dazu brauchts keine regulären Ausdrücke, auch wenn das grundsätzlich auch so machbar ist. Wenn es denn unbedingt ein regulärer Ausdruck sein soll, solltest du deinen hier auch mal herzeigen, um zu schauen, was an deiner Herangehensweise falsch sein könnte.

      vielen dank für die anregungen. stringverkettung mit . kommt hier leider nicht in frage:

        
      echo prozess_vars("[nick] ist dein Name.");  
        
      function prozess_vars($string) {  
      $string = preg_replace("!\[(.*?)\]!", "$$1", $string);  
      return $string;  
      }  
      
      

      das ist der ausschnitt.
      irgendein benutzer soll in ein textfeld mal phpvariablen über [variablenname] ansprechen/ausgeben können.
      wenn man z.b. nen seitenaufbau hat:

      <html>
      <head><title>[PageTitel]</title></head>
      <body>
      [Content]
      </body>
      </html>

      wenn man dieses mit einer schleife abarbeitet, muss man alle gegebenen variablen vorher festlegen (in einem array)..
      das ist es was ich verhindern will, da variablen hinzugefügt werden können, welche man nicht voraussehen kann (z.b. post daten).

      vielen dank für eure bemühungen, ich hoffe mein problem ist etwas klarer,

      1. Hallo m²!

        Einmal reicht, auch an Silvester ;-)

        ℆, ℒacℎgas

        --
        Bei der intendierten Realisierung der linguistischen Simplifizierung
        des regionalen Idioms resultiert die Evidenz der Opportunität extrem
        apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
        milierter Xenologien konsequent zu eliminieren!
      2. Hallo

        vielen dank für die anregungen. stringverkettung mit . kommt hier leider nicht in frage:

        echo prozess_vars("[nick] ist dein Name.");

        function prozess_vars($string) {
        $string = preg_replace("![(.*?)]!", "$$1", $string);
        return $string;
        }

        
        >   
        > das ist der ausschnitt.  
        > irgendein benutzer soll in ein textfeld mal phpvariablen über [variablenname] ansprechen/ausgeben können.  
        > wenn man z.b. nen seitenaufbau hat:  
        >   
        > <html>  
        > <head><title>[PageTitel]</title></head>  
        > <body>  
        > [Content]  
        > </body>  
        > </html>  
        >   
        > wenn man dieses mit einer schleife abarbeitet, muss man alle gegebenen variablen vorher festlegen (in einem array)..  
        > das ist es was ich verhindern will, da variablen hinzugefügt werden können, welche man nicht voraussehen kann (z.b. post daten).  
        >   
        > vielen dank für eure bemühungen, ich hoffe mein problem ist etwas klarer,  
        > m²  
          
        Oha, ich habe ein [Déjà-vu](https://forum.selfhtml.org/?t=120693&m=775300).  
          
        Davon abgesehen denke ich, dass [Ashuras](https://forum.selfhtml.org/?t=120693&m=775291) Vorschlag am besten geeignet ist.  
          
        Tschö, Auge  
        
        -- 
        Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.  
        (Victor Hugo)  
          
        [Veranstaltungsdatenbank Vdb 0.1](http://termindbase.auge8472.de/)
        
  3. Hallo m²!

    "$name ist dein Name."

    Zeig mal deinen Regulären Ausdruck und die Weiterverarbeitung des-
    selben.
    Vermutlich wird die Variable nicht durch ihren Wert ersetzt, da sie
    in einer entsprechenden Umgebung genannt wird ('' statt ""). Um
    Abhilfe zu schaffen, ersetze einfach in einen Ausdruck à la
    echo $name.' ist dein Name.';

    Das lässt sich bei o.g. Schritten sicherlich ganz leicht realisieren.

    ℆, ℒacℎgas

    --
    Bei der intendierten Realisierung der linguistischen Simplifizierung
    des regionalen Idioms resultiert die Evidenz der Opportunität extrem
    apparent, den elaborierten und quantitativ opulenten Usus nicht assi-
    milierter Xenologien konsequent zu eliminieren!
    1. Zeig mal deinen Regulären Ausdruck und die Weiterverarbeitung des-
      selben.
      Vermutlich wird die Variable nicht durch ihren Wert ersetzt, da sie
      in einer entsprechenden Umgebung genannt wird ('' statt ""). Um
      Abhilfe zu schaffen, ersetze einfach in einen Ausdruck à la
      echo $name.' ist dein Name.';

      vielen dank für die anregungen. stringverkettung mit . kommt hier leider nicht in frage:

      echo prozess_vars("[nick] ist dein Name.");

      function prozess_vars($string) {
      $string = preg_replace("![(.*?)]!", "$$1", $string);
      return $string;
      }

      das ist der ausschnitt.
      irgendein benutzer soll in ein textfeld mal phpvariablen über [variablenname] ansprechen/ausgeben können.
      wenn man z.b. nen seitenaufbau hat:

      <html>
      <head><title>[PageTitel]</title></head>
      <body>
      [Content]
      </body>
      </html>

      wenn man dieses mit einer schleife abarbeitet, muss man alle gegebenen variablen vorher festlegen (in einem array)..
      das ist es was ich verhindern will, da variablen hinzugefügt werden können, welche man nicht voraussehen kann (z.b. post daten).

      vielen dank für eure bemühungen, ich hoffe mein problem ist etwas klarer,

  4. hallo nochmal,
    ich habe eine Lösung, falls das interessiert:

      
    function prozess_vars($string) {  
      
      foreach ($_REQUEST as $var_name => $var_value) {  
        echo $var_name.": ".$var_value."<br>";  
        $string = str_replace("[".$var_name."]", $var_value, $string);  
      }  
      
      return $string;  
    }  
      
    
    

    damit geht es für jede definierte variable.
    vielen dank für eure hilfe, auch wenn ich mir die lösung selbst gebastelt hab ;)

    1. mist schon wieder doppelpost :(

      sorry

      1. Hallo

        mist schon wieder doppelpost :(

        Neee: Dreifachpost.
        https://forum.selfhtml.org/?t=120693&m=775326
        https://forum.selfhtml.org/?t=120693&m=775320
        https://forum.selfhtml.org/?t=120693&m=775325
        ;-)

        Tschö, Auge

        --
        Die Musik drückt aus, was nicht gesagt werden kann und worüber es unmöglich ist zu schweigen.
        (Victor Hugo)
        Veranstaltungsdatenbank Vdb 0.1
  5. hallo nochmal,
    ich habe eine Lösung, falls das interessiert:

      
    function prozess_vars($string) {  
      
      foreach ($_REQUEST as $var_name => $var_value) {  
        echo $var_name.": ".$var_value."<br>";  
        $string = str_replace("[".$var_name."]", $var_value, $string);  
      }  
      
      return $string;  
    }  
      
    
    

    damit geht es für jede definierte variable.
    vielen dank für eure hilfe, auch wenn ich mir die lösung selbst gebastelt hab ;)