Ankündigung

Einklappen
Keine Ankündigung bisher.

RegExp: Dynamisches Ersetzen

Einklappen

Neue Werbung 2019

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

  • RegExp: Dynamisches Ersetzen

    Hi,

    ich habe ein Problem, bei dem mir weder Dr.Google, noch das Forum oder Herr Koehntopp weiterhelfen konnten:

    Ich möchte gerne einen Text durchsuchen und bestimmte Textstellen ersetzen. Dabei soll "variable1" mit der selbigen Variable ($variable1) ersetzt werden. "Variable2" mit dem Inhalt der Variablen $variable2.

    Ich kann noch nicht absehen, wie groß das Projekt wird und möchte es daher nicht so speicherlastig gestalten (alle Variablen mit Datenbankwerten füllen und ggf einzeln ersetzen kann keine Lösung sein).

    Habe schon mit ereg_replace und preg_replacer (auch preg_replace_callback) experimentiert, komme damit aber nicht weiter. Gibt es evtl eine Möglichkeit, bei der preg_replace_callback auch das gefundene Suchmuster ("//1" o.ä.) mit an die Funktion zu übergeben?

    Oder ist der Lösungsweg ein ganz anderer? Freue mich über jeden laut gedachten Gedanken.

    Viele Grüße aus Hannover,
    Andreas

    http://www.siebenbergenews.de
    http://www.ageweco.de


  • #2
    Code:
    while (list($key,$val) = each($out)) {
       $contents = preg_replace("//i", $out{"$key"}, $contents);
    }
    ersetze inhalt aus durch variablen aus dem array - das ding nutze ich auch in meinen Templates - gut, einfach und schnell...

    Kommentar


    • #3
      Hi,

      vielen Dank für die schnelle Antwort. Gibt es evtl auch eine Möglichkeit, mit der grep_replace_callback o.ä. direkt eine Funktion anzusteuern, die ggf erst Daten in die Variable liest?

      Bei Deinem Vorschlag müsste ich immer alle Datensätze (und das können mehrere 1000 werden) einlesen und dann nach jedem Datensatz einzeln suchen. Das würde sehr hohen Serverlast bedeuten.

      Viele Grüße,
      Andreas

      Kommentar


      • #4
        Zitat von ballrock2
        Gibt es evtl auch eine Möglichkeit, mit der grep_replace_callback o.ä. direkt eine Funktion anzusteuern, die ggf erst Daten in die Variable liest?
        nicht dass ich es wüsste... man könnte es "manuel" machen - ist m.E. auch kein Grosser Aufwand. Du liest alle zu ersetzenden Variablen aus dem Template aus, packst die Inhalte der Variablen in ein Array und gehst nochmal mit dem Array über regex durch.

        Zitat von ballrock2
        Bei Deinem Vorschlag müsste ich immer alle Datensätze (und das können mehrere 1000 werden) einlesen und dann nach jedem Datensatz einzeln suchen. Das würde sehr hohen Serverlast bedeuten.
        huh... mehrere 1000? warum denn so viele? warum liest du nicht die Datensätze aus, die du brauchst? Entweder verstehe ich es nicht was du meinst, oder du machst es viel umständlicher als es eigentlich ist...

        Kommentar


        • #5
          Hi,

          oh sorry, habe Deinen Eintrag überlesen gehabt

          Ich möchte gerne dynamische Elemente in eine Seite einbinden. Dabei soll eine beliebig große Zahl an Elementen in einer Datenbank liegen.

          Mit einem Befehl (z.B. ##info:1##) soll dann der Wert, der in der Datenbank unter der ID 1 steht, an diese Stelle gesetzt werden.

          Am Anfang werden hier sicherlich nur einige wenige Werte stehen, aber ich würde das Projekt gerne gleich so machen, dass man eben später auch größere Projekte damit fahren kann.

          Und ich würde eben gerne umgehen, dass ich wirklich immer alle Variablen einlesen muss um evtl nur einen Platzhalter zu ersetzen. So ein paar "Frickellösungen" würden mir auch einfallen, aber ich würde eben gerne eine effiziente Lösung finden - und da ist das Auslesen von Daten, die dann doch nicht gebraucht werden nicht wirklich schön (ebenso wie das vorherige durchsuchen des Textes nach den Platzhaltern und dem anschließenden gezielten Auslesen).

          Vielleicht gibt es noch eine andere Lösung *hoff*

          Viele Grüße,
          Andreas )

          Kommentar


          • #6
            ebenso wie das vorherige durchsuchen des Textes nach den Platzhaltern
            Du wirst nicht rausfinden, welche Daten Du benötigst - also welche Platzhalter im Template stehen, wenn Du es nicht danach durchsuchst! Das hat mit "Frickellösung" nix zu tun sondern nur mit nicht vorhandener künstlicher Intelligenz seitens des Servers!

            Tipp: Benutze die smarty Template-Engine und bastle Dir ein plugin dafür.
            http://smarty.php.net

            Thomas

            Kommentar

            Lädt...
            X