alles suchen und alles ersetzen klappt nicht

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

  • alles suchen und alles ersetzen klappt nicht

    Der Code hier macht schon FAST das was ich will aber auch nicht wirklich Wenn ich damit versuche alle {name} in dem Text durch einen Variablen wert zu ersetzen z.b. aus {name} $name zu machen geht das nur bedingt. Er überschreibt nach dem 1. Suchen und Ersetzen das 1. Ergebnis und macht dann den 2. Eintrag mit {} den er Findet, bei 3. macht er dann nur den 3. und nicht die ersten 2.... Wie kann ich das Problem lösen ?

    PHP-Code:
    <?php
    //öffnen und einlesen einer datei in einen string 
    function fileopen($file) {

        
    //$file ="test.tpl";

        
    $filename "$file";
        
    $handle fopen ($filename"r");
        
    $content fread ($handlefilesize ($filename));
        
    fclose ($handle);
        
        return (
    $content);
        }
    #######################################################################
        
    $news "PHP ist doch nicht scheisse";
    $das  "das hier und jetzt !";

    $file fileopen("test.tpl");
    preg_match_all("/{(.*)}/U"$file$found);

    $i = -1;
    foreach (
    $found[0] as $v1) {
        
    $i++;
        
    //echo "$v1 --> ".$found[1][$i]."<br> ";
        
    $output str_replace("".$v1."""".$found[1][$i].""$file);
        echo 
    "$output<br>";

    };
    ?>

    Das was das Script ausgibt in dem Fall sieht dann so aus :

    Code:
    hier sind die -->news<--- eingetragen
    und hier {das}...ist ebenfalls eine gewaltige scheiße
    
    {ende}
    
    hier sind die -->{news}<--- eingetragen
    und hier das...ist ebenfalls eine gewaltige scheiße
    
    {ende}
    
    hier sind die -->{news}<--- eingetragen
    und hier {das}...ist ebenfalls eine gewaltige scheiße
    
    ende

  • #2
    versteh i net!
    Wenn ich damit versuche alle {name} in dem Text durch einen Variablen wert zu ersetzen z.b. aus {name} $name zu machen geht das nur bedingt. Er überschreibt nach dem 1. Suchen und Ersetzen das 1. Ergebnis und macht dann den 2. Eintrag mit {} den er Findet, bei 3. macht er dann nur den 3. und nicht die ersten 2.... Wie kann ich das Problem lösen ?

    Kommentar


    • #3
      Du siehst doch was Falsch läuft...

      1. Durchlauf, es wird {news} gegen news ersetzt

      hier sind die -->news<--- eingetragen
      und hier {das}...ist ebenfalls eine gewaltige scheiße
      {ende}


      2. Durchlauf, es wird {das} gegen "das" ersetzt aber aus Durchlauf 1 die Änderung wird verworfen

      hier sind die -->{news}<--- eingetragen
      und hier das...ist ebenfalls eine gewaltige scheiße
      {ende}


      3. Durchlauf, es wird {ende} gegen "ende" ersetzt aber aus Durchlauf 2 die Änderung wird verworfen genauso wie die aus dem 1. Durchlauf

      hier sind die -->{news}<--- eingetragen
      und hier {das}...ist ebenfalls eine gewaltige scheiße
      ende

      Ich möchte es aber so haben :
      Aus

      hier sind die -->{news}<--- eingetragen
      und hier {das}...ist ebenfalls eine gewaltige scheiße
      {ende}

      soll das werden

      hier sind die -->$news<--- eingetragen
      und hier $das ...ist ebenfalls eine gewaltige scheiße
      $ende

      Kommentar


      • #4
        hab ich nicht gesehen, mir war das einfach zu unverständlich. jetzt hab ichs verstanden.

        aber was wundert dich das?

        PHP-Code:
        $output str_replace("".$v1."""".$found[1][$i].""$file); 
        das Ergebnis folgt aus dieser Zeile. Musst schon wissen, in welchem String du ersetzen willst!

        Kommentar


        • #5
          Die erwähnte Zeile sollte in jedem Durchgang einen der Begriffe ersetzen. Tut sie ja auch, verschlampt dabei aber das vorherige Ergebnis. wie kann ich das ändern !? Ich such ja nur nach einer Hilfe zu einem Lösungsvorschlag.

          Mal was anderes ; Was ist die Motivation solchen Deppen wie mir zu helfen ? Immerhin scheints hier ja Leute zu geben die das den ganzen Tag machen.

          Kommentar


          • #6
            Mal was anderes ; Was ist die Motivation solchen Deppen wie mir zu helfen ? Immerhin scheints hier ja Leute zu geben die das den ganzen Tag machen.
            ich lieg immer lachend unterm Schreibtisch, wenn ich sowas sehe!

            Also:

            PHP-Code:
            $output str_replace("".$v1."""".$found[1][$i].""$file); 
            ersetzt $v1 durch $found[1][$i] im string $file. Logisch??? Wenn file immer das gleiche ist, wird auch immer nur eins ersetzt! Verstanden?

            Kommentar


            • #7
              So weit war ich auch schon - nur wie krieg ich ALLE ersetzt ?

              Kommentar


              • #8
                mal logisch nachgedacht:

                PHP-Code:
                $file str_replace("".$v1."""".$found[1][$i].""$file); 

                Kommentar


                • #9
                  Argh, verdammt, ich hab alles mögliche probiert aber auf die Idee bin ich nicht gekommen

                  Jetzt funktioniert es FAST so wie ich will ...
                  Die {news} wird zu $news umgewandlet in dem Text, allerdings gibt er das auch $news aus anstatt den Inhalt der Variable $news

                  Das sieht dann so aus :
                  hier sind die -->$news<--- eingetragen
                  und hier $das...ist ebenfalls mist
                  $ende

                  PHP-Code:
                  function parse($var) {
                      
                  $file fileopen("$var");
                      
                  preg_match_all("/{(.*)}/U"$file$found);

                      
                  $i = -1;
                      foreach (
                  $found[0] as $v1) {
                          
                  $i++;
                          
                  $file str_replace("".$v1."","$".$found[1][$i].""$file);
                      };

                      return (
                  $file);
                      }
                  ########################################################################


                  $news ="shsdklghsdkgsdghksjdgh";

                  $test "test.tpl";
                  $out parse ($test);
                  echo 
                  $out

                  Kommentar


                  • #10
                    deine schreibweise ist ohnehin seltsam!!!

                    $file = str_replace($v1,"$$found[1][$i]", $file);

                    versuch mal so.

                    Kommentar


                    • #11
                      Das führt dazu :

                      hier sind die -->$Array[0]<--- eingetragen
                      und hier $Array[1]...ist ebenfalls eine gewalltige scheiße
                      $Array[2]

                      Kommentar


                      • #12
                        $file = str_replace($v1,"${$found[1][$i]}", $file);

                        ???

                        Kommentar


                        • #13
                          Jupp, danke habs zwischenzeitlich aber schon hinbekommen

                          Kommentar


                          • #14
                            wunderbar! hast dus so gemacht, wie ich gepostet hab?

                            Kommentar


                            • #15
                              wunderbar! hast dus so gemacht, wie ich gepostet hab?

                              Kommentar

                              Lädt...
                              X