Ankündigung

Einklappen
Keine Ankündigung bisher.

String in geschweifte Klammern durch Variable ersetzen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • String in geschweifte Klammern durch Variable ersetzen

    Hallo,
    ich möchte aus einen Text alle in geschweifte Klammern gesetzte Strings durch die dazugehörige Variable ersetzen.


    Beispiel
    {name} ist mit {name2} spazieren.

    Soll das werden
    $name = 'Peter';
    $name2 = 'Rüdiger';

    Peter ist mit Rüdiger spazieren.


    str_replace ist zwar eine möglichkeit mit Arrays, aber gibt es da nicht eine bessere möglichkeit?

  • #2
    Was ist denn an str_(i)replace nicht passend in deinem Fall?

    Alternative sind natürlich immer preg_replace bzw. preg_replace_callback, ich bezweifle aber, das die in deinem Fall angemessene Alternativen sind.
    Zitat von nikosch
    Naja, anscheinend spricht die Steckdose kein HTTP. LOL

    Kommentar


    • #3
      Möglichkeit Nr. 3: Eine Template-Engine.

      Kommentar


      • #4
        Eine ~ähnliche Variante wäre auch sprintf()


        PHP-Code:
        $text "%s ist mit %s spazieren.";
        $name1 "Klaus";
        $name2 "Susi";

        echo 
        sprintf($text$name1$name2);
        // Klaus ist mit Susi spazieren. 
        Oder wenn du die Varainte mit str_replace() machst, kannst du das in einer Funktion ev. auch mit variablen Parametern machen etc.. Je nachdem für welchen Einsatzzweck.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Hast recht, das macht wirklich keinen Sinn. ^^ Wieder mal ne Denkblockade...

          Kommentar


          • #6
            Ich weiß nicht, ob dein Einsatzzweck in Richtung Template geht. Wenn ja, dann schau dir mal TinyTemplate an.

            Kommentar


            • #7
              Ein Template würde mir da nicht weiterhelfen, da ich die Ausgaben per JSON zurück gebe

              Kommentar


              • #8
                [MAN]strtr[/MAN]?

                Kommentar


                • #9
                  Zitat von Condor93 Beitrag anzeigen
                  Ein Template würde mir da nicht weiterhelfen, da ich die Ausgaben per JSON zurück gebe
                  Etwas mehr an Hintergrundinformationen zum Ziel deiner Aktionen wären hier sicher hilfreich.
                  TinyTemplate nimmt letzlich Strings als Vorlage und liefert auch wieder Strings.
                  Ob im Inhalt nun HTML, JS, CSS oder sonstwas steht ist TinyTemplate (fast) immer Wurscht.
                  Beim Ziel JSON sind (einfache) geschweifte Klammern auch nicht unbedingt ideale Begrenzer für deine Platzhalter.

                  Kommentar


                  • #10
                    Beispiel:
                    Ich gehe "{name} ist mit {name2} spazieren." 20x durch mit verschiedenen Inhalte. (Das ist ein Beispiel!).

                    Die neuen Strings, wo {name} und {name2} ausgetauscht wurde, übergebe ich an einen weiteren Array der mir zum Ende das JSON Array zurück gibt.

                    Kommentar


                    • #11
                      Zitat von Condor93 Beitrag anzeigen
                      str_replace ist zwar eine möglichkeit mit Arrays, aber gibt es da nicht eine bessere möglichkeit?
                      Was soll denn "besser" überhaupt heissen?

                      Es gibt kaum eine intuitivere Variante (und vermutlich auch keine performantere) als das bereits erwähnte str_replace(). Was stört dich daran?

                      PHP-Code:
                      $text '{name} ist mit {name2} spazieren.';

                      $values = array(
                        
                      '{name}' => 'Hans',
                        
                      '{name2}' => 'Willi' 
                      );

                      echo 
                      str_replace(array_keys($values), array_values($values), $text); 
                      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                      Kommentar


                      • #12
                        PHP-Code:
                        $messageFormatter = new MessageFormatter(NULL'{name} ist mit {name2} spazieren.');
                        var_dump($messageFormatter->format(array(
                            
                        'name' => 'Peter',
                            
                        'name2' => 'Rüdiger'
                        ))); 

                        Kommentar

                        Lädt...
                        X