replace string zu php-befehl

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

  • replace string zu php-befehl

    Hallo,

    ich möchte aus einem langen STRING bestimmte wörter rausfiltern und sie mit einem php-befehl wie zB. include(xxx); ersetzen..
    dies ist notwendig weil die include-datei je nach STRING-Wort dynamischen inhalt beinhaltet...

    dieser befehl soll dann natürlich auch von PHP an dieser stelle ausgeführt werden...

    kennt jemand eine elegante methode?

    lg oliver

  • #2
    hilft da vielleicht explode() oder substr() ?

    http://www.selfphp.de/befehlsverzeichnis/
    Hochachtungsvoll
    pingzaong

    Kommentar


    • #3
      Ist dein Problem das Ersetzen oder das Ausführen?

      PHP-Code in Strings kann mittels eval ausgeführt werden.
      Bei Problemen beim Ersetzen müsstest du die Frage präzisieren.

      Kommentar


      • #4
        explode hilft in dem fall nicht weil es manchmal bis zu 3 verschiedene wörter im string sind die ersetzt werden müssen..

        wenn ich zB mit explode("wort1", $xxx) einen string zerlege dann müsst ich jedes einzelne array-element wieder und wieder zerlegen um alle wörter rauszufiltern bzw. um abzuchecken ob sich ein weiteres wort drin befindet..

        Kommentar


        • #5
          Original geschrieben von Pennywise
          Ist dein Problem das Ersetzen oder das Ausführen?

          PHP-Code in Strings kann mittels eval ausgeführt werden.
          Bei Problemen beim Ersetzen müsstest du die Frage präzisieren.
          Ersetzen ist kein Problem.. mit zB. preg_replace()

          hier ein blödes beispiel...
          ich möchte folgendes erreichen:

          preg_replace("/wort1/", "<? include "datei.php" ?>", $string)

          dabei soll das <? include "datei.php" ?> ausgeführt und nicht nur in html hingeschrieben werden...

          Kommentar


          • #6
            Schon probiert ?
            PHP-Code:
            preg_replace("/wort1/", eval('<? include "datei.php" ?>'), $string);
            No idea obs funzt, aber du willst den Inhalt von datei.php ja ausgeführt haben und das müsste mit eval() schon gehen.

            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


            • #7
              Du willst das einfügen, was die Includedatei ausgibt?

              Dann wäre anstatt eines einfachen includes auch der Weg über den Ausgabepuffer möglich.
              PHP-Code:
              ob_start();
              $string file_get_contents('includedatei');
              eval (
              $string);
              $replacevar ob_get_contents(); 
              Dann stehen die Ausgaben der Includedatei in der Variable $replacevar.

              Wenn ich dich nicht richtig verstanden habe, hättest du ein verständliches Beispiel?

              Kommentar


              • #8
                ich hab schon mal das erste erfolgreiche ergebnis:
                PHP-Code:
                $string="bla test blabla";
                $incdatei=eval(include 'datei.php');
                echo 
                $string=preg_replace("/test/"$incdatei$string); 
                es wird alles ausgeführt

                aber es kommt zusätzlich eine fehlermeldung:
                Parse error: parse error in /home/sites/test/test.php(5) : eval()'d code on line 1

                Wenn ich dich nicht richtig verstanden habe, hättest du ein verständliches Beispiel?
                siehe oben

                file_get_contents geht leider nur ab php5
                Zuletzt geändert von phunxter; 03.01.2006, 15:44.

                Kommentar


                • #9
                  Und was steht in Zeile 1 der Datei?

                  Kommentar


                  • #10
                    nichts...
                    die zeilenausgabe ist falsch... das eval ist am falschen platz anscheinend

                    Kommentar


                    • #11
                      habs jetzt also doch in babysprache schreiben müssen:

                      aber danke an alle die mir helfen wollten


                      PHP-Code:
                      $string="test1<br> [newsletter] test2<br> [content] test3<br>";

                      if(
                      preg_match("/\[*\]/"$string)) {

                          
                      $carr=explode("[content]"$string);    
                          
                      $arr1=$carr[0];
                          
                          if(
                      preg_match("/\[newsletter\]/"$arr1)) {
                          
                              
                      $carr2=explode("[newsletter]"$arr1);    
                              
                      $arr3=$carr2[0];
                              
                      $arr4=$carr2[1];
                              
                              
                      $method=1;
                              
                          }
                          
                          
                      $arr2=$carr[1];
                          
                          if(
                      preg_match("/\[newsletter\]/"$arr2)) {
                          
                              
                      $carr3=explode("[newsletter]"$arr2);    
                              
                      $arr5=$carr3[0];
                              
                      $arr6=$carr3[1];
                              
                              
                      $method=2;
                              
                          }

                      }

                      if(
                      $method == 1) {
                          echo 
                      $arr3;
                          include 
                      "newsletter.php";
                          echo 
                      $arr4;
                          include 
                      "content.php";
                          echo 
                      $arr2;
                          
                      } else {
                          echo 
                      $arr1;
                          include 
                      "content.php";
                          echo 
                      $arr5;
                          include 
                      "newsletter.php";
                          echo 
                      $arr6;

                      Kommentar


                      • #12
                        naja, wenn funzt ist doch in ordnung. den code sieht ja (außer uns gerade) eh keiner...und übersichtlich ist es auf jeden fall
                        2 meiner pages:

                        Kommentar

                        Lädt...
                        X