eregi_replace Problem mit Array

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

  • eregi_replace Problem mit Array

    Hi,

    ich habe ein Problem mit eregi_replace
    PHP-Code:
    <?php
    $var
    ["user"]="Test";
    $line="Hallo {%user}";
    $line2="Hallo ".$var["user"];
    $line3=eregi_replace("\{%(.*)\}","\\1",$line);
    $line4=eregi_replace("\{%(.*)\}",$var["\\1"],$line);
    echo 
    $line."<br>".$line2."<br>".$line3."<br>".$line4;
    ?>
    Ausgabe:
    Hallo {%user}
    Hallo Test
    Hallo user
    Hallo
    Problem:
    $line4 sollte eigentlich $var["\\1"] in $var["user"] umwandeln, es kommt allerdings nichts dabei raus!

    Habe schon alle möglichen Kombinationen ausprobiert, aber habs nicht geschafft!
    Jemand einen Tipp?

  • #2
    nein, im array $var gibt es kein element mit dem schlüssel "\1".

    tipp? str_replace.

    Kommentar


    • #3
      Wie stellst du dir das mit str_replace vor?

      Kommentar


      • #4
        PHP-Code:
        echo str_replace('{%user}',$var['user'],$deinString); 
        so z.B.
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Das bringt mir rein garnix, weil der wert zwischen {% und } nicht feststeht sondern variiert!

          Kommentar


          • #6
            Das bringt mir rein garnix, weil der wert zwischen {% und } nicht feststeht sondern variiert!
            Wieviele Möglichkeiten gibt es und wird jede Möglichkeit A mit Ersetzung B ersetzt ? Wenn ja: Du kannst str_replace() auch Arrays als needle resp haystack übergeben
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              Nein es gibt praktisch unendlich viele Möglichkeiten!
              Sonst würde ich ja nicht solche Umstände machen

              Kommentar


              • #8
                Das bringt mir rein garnix, weil der wert zwischen {% und } nicht feststeht sondern variiert!
                und dafür gab gott uns variablen, die wir mit strings beliebig konkatenieren können. wo ist das problem?

                Kommentar


                • #9
                  Ich will einfach nur, dass der Wert der zwischen {% } steht als Feldname eines Arrays eingesetzt wird!
                  Mir fehlt dafür nur der Ansatz bzw der fehlende Befehl für eregi_replace()

                  Kommentar


                  • #10
                    Ich will einfach nur, dass der Wert der zwischen {% } steht als Feldname eines Arrays eingesetzt wird!
                    Probiers so:
                    PHP-Code:
                    $meinArray = array();
                    $treffer = array();
                    preg_match_all('/\\{\\%([^\\}]*)\\}/',$string,$treffer);
                    foreach(
                    $treffer[1] as $wert){
                      
                    $meinArray[trim($wert)] = 'irgendwas';

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      analog
                      PHP-Code:
                      foreach( $arr as $k=>$v ) {
                         
                      $txt str_replace$k$v$txt );

                      Kommentar


                      • #12
                        Ich denke der TS will alles in den geschweiften Klammern ersetzen
                        PHP-Code:
                        foreach( $arr as $k=>$v ) {
                           
                        $txt str_replace'{%'.$k.'}'$v$txt );

                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          das ist sein problem.

                          Kommentar


                          • #14
                            Ok vielen Dank!
                            Habe das Problem nach jahlives bzw penizilins Methode gelöst!
                            Beispiel:
                            PHP-Code:
                            $var["user"]="Test";
                            $line="Hallo {%user}";
                            foreach(
                            $var as $k=>$v){
                                   
                            $line=str_replace("{%".$k."}"$v$line);
                            }
                            echo 
                            $line

                            Kommentar

                            Lädt...
                            X