str_replace php-code ersetzen

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

  • str_replace php-code ersetzen

    Hallo!
    Habe ein Problem:

    Ich will per str_replace ein Wort durch php-code ersetzen. Dieser wird dann aber nicht ausgeführt.

    PHP-Code:
    <?php
    $text 
    "Dies ist ein kleines Beispiel";
    $text str_replace("ist""<?php echo \"hallo\"; ?> war"$text);
    echo 
    $text;
    ?>
    "hallo" wird nicht angezeigt.

    Habt ihr ne Idee?
    Zuletzt geändert von Jeronymo; 18.03.2006, 16:00.
    Kostenlos per SMS informieren lassen, wenn es Billig-Flieger-Aktionen mit 1€ Tickets gibt bei Flug7.de

  • #2
    eval()

    Kommentar


    • #3
      danke für die sooooooo schnelle antwort...

      php ist super...da gibs für jedes problem nen befehl... :-)

      ABER:

      dadurch, dass ich in dem Quellstring nur ein Wort durch php-code ersetze, kann ich den geänderten String ja nicht direkt ausführen mit eval().
      Da muss ich ja jetzt wieder extra nen String nutzen, der nur den php-code beinhaltet.

      Im Beispiel würde das bedeuten: $text kann ja nicht mit eval() ausgeführt werden.

      Geht das nicht?
      Zuletzt geändert von Jeronymo; 17.03.2006, 02:09.
      Kostenlos per SMS informieren lassen, wenn es Billig-Flieger-Aktionen mit 1€ Tickets gibt bei Flug7.de

      Kommentar


      • #4
        PHP-Code:
        $text 'Ich bin ein Beispiel';
        eval(
        '$text=str_replace(\\'bin\\',\\'Hallo\\',$text);'); 
        Ergibt ein echo $text jetzt das gewünschte ? Die ' Zeichen im String sind mit \ escaped, aber das Forum unterschlägt diese Zeichen.

        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


        • #5
          hallo!
          danke für die antwort.... aber das bringt nur komisches zeugs...

          vielleicht gibs nen anderen ansatz. denn möglich sein muss das ja...das problem müssen ja schon mehr leute gehabt haben.

          GRUNDIDEE:

          Will das Wort Berlin in einem String $text ersetzen durch <?php include('berlin.php'); ?>

          Und das Include soll dann einfach ausgeführt werden, wenn ich echo $text; starte


          Mehr will ich ja gar nicht....
          Zuletzt geändert von Jeronymo; 18.03.2006, 15:56.
          Kostenlos per SMS informieren lassen, wenn es Billig-Flieger-Aktionen mit 1€ Tickets gibt bei Flug7.de

          Kommentar


          • #6
            PHP-Code:
            <?php
            $str 
            "Hallo Berlin!";

            $splitedStr preg_split('/Berlin/'$str);

            for (
            $i 0$i sizeof($splitedStr); ++$i) {
                print 
            $splitedStr[$i];
                
                if (
            $i < (sizeof($splitedStr) - 1)) {
                    include(
            'Berlin.php');
                }
            }
            ?>
            Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
            PHP Sicherheit
            PHPUnit[1-2]
            Professionelle Softwareentwicklung mit PHP 5
            Professionelle PHP 5-Programmierung

            Kommentar


            • #7
              in berlin sagt man: dat looft!

              den string zu splitten is ne super idee!

              ich danke ganz doll!

              als kleines danke schön hab ich für alle aus München was. Heut abend gibs bis 24uhr Flüge für 9€ inkl. aller Gebühren ab München. Also hin und zurück 18€ inkl. aller gebühren nach venedig, brüssel und so weiter.
              Link: KLICK HIER
              Kostenlos per SMS informieren lassen, wenn es Billig-Flieger-Aktionen mit 1€ Tickets gibt bei Flug7.de

              Kommentar


              • #8
                PHP-Code:
                 <?php
                $str 
                "Hallo hier in Rom! <P>Rom ist immer eine Reise wert!<BR>Berlin aber auch!";

                $rom preg_split('/Rom/'$str);

                for (
                $i 0$i sizeof($rom); ++$i) {
                    print 
                $rom[$i];
                    if (
                $i < (sizeof($rom) - 1)) {
                        include(
                'rom.php');
                    }

                }

                ?>
                Hab ich jetzt drin. Nun will ich jedoch auch für "Berlin" berlin.php includen.
                Das Problem ist also man müsste für preg_split ein 2tes Wort als Muster nutzen. Dann aber auch in der Schleife, die das Array ausgibt berlin.php includen.

                Die Schleife einfach 2 mal aufrufen zeigt ja den gesamten text doppelt an.

                Habt ihr Ideen? Nen Ansatz reicht mir...hoffe ich

                Wenns fertig ist, stell ich es euch allen zur Verfügung: Derzeitiger Stand: http://www.flug7.de/test/test.php

                Grüße
                Zuletzt geändert von Jeronymo; 18.03.2006, 17:31.
                Kostenlos per SMS informieren lassen, wenn es Billig-Flieger-Aktionen mit 1€ Tickets gibt bei Flug7.de

                Kommentar


                • #9
                  PHP-Code:
                  <?php
                  class City
                  {
                      protected 
                  $_city;

                      public function 
                  __construct(array $city)
                      {
                          
                  $this->_city $city;
                      }

                      public function 
                  exists($city)
                      {
                          return isset(
                  $this->_city[$city]);
                      }

                      public function 
                  getPath($city)
                      {
                          if (
                  $this->exists($city)) {
                              return 
                  $this->_city[$city];
                          }
                          return 
                  null;
                      }

                      public function 
                  get($city null)
                      {
                          if (
                  $city !== null) {
                              if (
                  $this->exists($city)) {
                                  return array(
                  $city => $this->getPath($city));
                              }
                              return 
                  null;
                          }
                          return 
                  $this->_city;
                      }

                      public function 
                  getCities()
                      {
                          return 
                  array_keys($this->_city);
                      }
                  }

                  abstract class 
                  CityParser
                  {
                      protected 
                  $city;
                      private 
                  $patterns = array();

                      public function 
                  __construct(City $city)
                      {
                          
                  $this->city $city;
                          
                  $this->preparePattern();
                      }

                      private function 
                  preparePattern()
                      {
                          foreach (
                  $this->city->getCities() as $city) {
                              
                  $this->patterns[] = sprintf('/(%s)/e'$city);
                          }
                      }

                      public function 
                  parse($text)
                      {
                          return 
                  preg_replace($this->patterns'$this->process(\\\\1)'$text);
                      }

                      abstract protected function 
                  process($v);
                  }


                  class 
                  CityIncluder extends CityParser
                  {

                      protected function 
                  process($v)
                      {
                          if (
                  $this->city->exists($v)) {
                              include(
                  $this->city->getPath($v));
                          }
                          return 
                  $v;
                      }
                  }

                  $str "Hallo hier in Rom! <P>Rom ist immer eine Reise wert!<BR>Berlin aber auch!";

                  $city = array('Berlin' => 'inlcudes/city/berlin.inc.php',
                                
                  'Rom' => 'inlcudes/city/rom.inc.php');

                  $europe = new City($city);

                  $cityIncluder = new CityIncluder($europe);
                  print 
                  $cityIncluder->parse($str);
                  ?>
                  Zuletzt geändert von schlimmerfinger; 18.03.2006, 20:43.
                  Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
                  PHP Sicherheit
                  PHPUnit[1-2]
                  Professionelle Softwareentwicklung mit PHP 5
                  Professionelle PHP 5-Programmierung

                  Kommentar


                  • #10
                    Hola...wo hast du das so schnell hergezaubert?
                    Irgendwie mag er restricted nicht.. am Anfang.
                    Er sagt

                    Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/www/web531/html/flug7/test/test2.php on line 4

                    ... ?
                    Kostenlos per SMS informieren lassen, wenn es Billig-Flieger-Aktionen mit 1€ Tickets gibt bei Flug7.de

                    Kommentar


                    • #11
                      Original geschrieben von Jeronymo
                      Hola...wo hast du das so schnell hergezaubert?
                      Irgendwie mag er restricted nicht.. am Anfang.
                      Er sagt

                      Parse error: parse error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/www/web531/html/flug7/test/test2.php on line 4

                      ... ?
                      Das Beispiel von mir funktioniert nur ab der PHP5.1.2 Version. Dann muss du es eben auf der 4er Verison anpassen
                      Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jedermann ist davon überzeugt, dass er genug davon habe – René Descartes
                      PHP Sicherheit
                      PHPUnit[1-2]
                      Professionelle Softwareentwicklung mit PHP 5
                      Professionelle PHP 5-Programmierung

                      Kommentar


                      • #12
                        Huff, ist das nicht ein wenig overkilled? Gehts nicht eher abstrakt um das Ausführen von PHP-Code, wenn ein String einen bestimmten Substring enthält?

                        Eine einfache Funktion hätte es auch getan.
                        PHP-Code:
                        <?php

                        function replace($string$includes null) {
                            if (!
                        is_array($includes)) return $string;
                            foreach (
                        $includes as $word => $include) {
                                if (
                        strpos($string$word) === false) continue;
                                
                        ob_start();
                                include 
                        $include;
                                
                        $include_str ob_get_clean();
                                
                        $string str_replace($word$include_str$string);
                            }
                            return 
                        $string;
                        }

                        // zuordnen
                        $includes = array('Berlin' => 'berlin.inc.php',
                                          
                        'Rom'    => 'rom.inc.php');

                        // ausgeben
                        echo replace('Rom ist schön!<br />Berlin auch!'$includes);

                        ?>


                        <?php // berlin.inc.php

                        echo $word.'<span class="tooltip">Links für <b>'.$word.'</b>: ...</span>';    

                        ?>

                        Kommentar


                        • #13
                          LÖSUNG

                          HABE DIE LÖSUNG:

                          test.php:
                          PHP-Code:
                          <?

                          $suchwoerter = array(
                          'Rom'  => 'rom.php',
                          'Berlin' => 'berlin.php');


                          $text  = 'text text text text text text text text text text text text text text text text Rom text text text text ';
                          $text .= 'text text text text text text Rom text text text text text text text Romania text text text text text text ';
                          $text .= 'text text text text text text text text text text text text Berlin text text text text text text text text ';
                          $text .= 'text text text Berlin text text text text text text text text text text text text Moskow text text text text ';

                          function intellitxt($treffer) {
                          global $suchwoerter;
                          include($suchwoerter[$treffer[0]]);
                          return $inc_text;
                          }

                          $pattern = array();

                          foreach($suchwoerter as $key => $dummy) {
                          $pattern[] = '/\b' . $key . '\b/is';
                          }

                          echo preg_replace_callback(
                          $pattern,
                          'intellitxt',
                          $text);

                          ?>

                          <script language="JavaScript" type="text/javascript" src="js/wz_tooltip.js"></script>
                          berlin.php:
                          PHP-Code:
                          <? 
                          $inc_text = '<span style="border-bottom:dashed 1px black; text-decoration:none;" onmouseover="return escape(\'Links für <B>Berlin</B><br><a href=\\\'http://www.octopustravel.com/Enter.jsp?siteid=student&start=SearchHotels.jsp&dest=CBER&Country=D&Currency=EUR&Language=g\\\' target=\\\'_blank\\\'>Hotels</A> in Berlin<br><a href=\\\'http://ad.zanox.com/ppc/?3295894C1652147876T\\\' target=\\\'_blank\\\'>Low-Cost-Reisen</A> nach Berlin\')"> Berlin</span>';
                          ?>

                          rom.php:
                          PHP-Code:
                          <? 
                          $inc_text = '<span style="border-bottom:dashed 1px black; text-decoration:none;" onmouseover="return escape(\'Links für <B>Rom</B><br><a href=\\\'http://www.octopustravel.com/Enter.jsp?siteid=student&start=SearchHotels.jsp&dest=CROM&Country=D&Currency=EUR&Language=g\\\' target=\\\'_blank\\\'>Hotels</A> in Rom<br><a href=\\\'http://ad.zanox.com/ppc/?3295899C130145849T\\\' target=\\\'_blank\\\'>Low-Cost-Reisen</A> nach Rom\')"> Rom</span>';
                          ?>
                          Ich danke Euch allen für Eure Mühen!
                          Kostenlos per SMS informieren lassen, wenn es Billig-Flieger-Aktionen mit 1€ Tickets gibt bei Flug7.de

                          Kommentar

                          Lädt...
                          X