@Perler - Ersetzung von Variablen in "Template"-Texten / regex bzw. eval - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Sonntag, 21.März.2004, 18:12.
    @Perler - Ersetzung von Variablen in "Template"-Texten / regex bzw. eval

      Hallo,
      Christoph hatte mir vor kurzem ne coole Regex gepostet, die erlaubt, Varaiblennamen in Datenfeldinhalten zu ersetzen.
      Nun werde aber damit logischerweise leider keine Sub-Aufrufe und Ausgaben mit ersetzt.
      Kann man das irgendwie noch hinkriegen?
      Mit eval gehts einwandfrei, aber da sind die Laufzeiten ums 10fache höher, und wenn das in nem Template 10mal passiert, und anstatt 0,01 Sekunden 0,1 Sekunden gebraucht werden, läuft das Template nur aufgrund der evals 1 Sekunde statt mit regex 0,1 Sekunde - das ist eigentlich nicht akzeptabel ;-)
      Hier mal ein Beispiel:
      in nem Datenbankfeld steht der HTML-Quelltext für ne Datensatzausgabe, in ner Sub im Haupttemplate werden bspw. Tabellen-Trennzeilen parameterabhängig generiert.
      Datenbankfeldinhalt des Feldes $html des Datensatzes mit Inhalt "test" im Feld $htmlinhalt aus der DB layout:
      ---Anfang dbfeldinhalt Feld $html
      <table>
      <tr><td>$feld</td></tr>
      ${ \&tz(1,5,$fh) }
      </table>
      
      ---Ende dbfeldinhalt
      im Template wird der Datensatz geholt:
      get "htmlinhalt==test" "layout";
      
      dann soll der Feldinhalt ausgegeben werden unter Ersetzung der Variablennamne und interpolierten Subausgaben
      mit eval geht es so einwandfrei:
      ---schnipp
      $tab_ausgabe = eval "<<EOF;\n$html\EOF\n\n";
      out $tab_ausgabe;
      
      ---schnapp

      mit regex in folgender Art werden nur die Variablen ersetzt, die Subaufrufe aber nicht, die Zeile wird im Klartext mit eingesetztem Variableninhalt für $fh angezeigt :-((
      ---schnipp
      ($tab_ausgabe = $html)=~ s/\$([a-z_]\w+)/$$1/gie; # das ist CBs Regex
      out $tab_ausgabe;
      
      ---schnapp
      Hat da jemand vielleicht ne Idee, wie man das bauen könnte, damit es auch fix läuft? - das ist zur kompletten Trennung von Funktion und Content ja zwingend erforderlich und bei grossen Anwendungen dann werden die Laufzeiten mit eval wirklich inakzeptabel (weit über 1-2 Sekunden, das machen die Provider dann nicht mehr mit....

      Danke für Tipp
      Ruben


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von hempelr (1976 Beiträge) am Sonntag, 21.März.2004, 18:12.
    @Perler - Ersetzung von Variablen in "Template"-Texten / regex bzw. eval

      Hallo,
      Christoph hatte mir vor kurzem ne coole Regex gepostet, die erlaubt, Varaiblennamen in Datenfeldinhalten zu ersetzen.
      Nun werde aber damit logischerweise leider keine Sub-Aufrufe und Ausgaben mit ersetzt.
      Kann man das irgendwie noch hinkriegen?
      Mit eval gehts einwandfrei, aber da sind die Laufzeiten ums 10fache höher, und wenn das in nem Template 10mal passiert, und anstatt 0,01 Sekunden 0,1 Sekunden gebraucht werden, läuft das Template nur aufgrund der evals 1 Sekunde statt mit regex 0,1 Sekunde - das ist eigentlich nicht akzeptabel ;-)
      Hier mal ein Beispiel:
      in nem Datenbankfeld steht der HTML-Quelltext für ne Datensatzausgabe, in ner Sub im Haupttemplate werden bspw. Tabellen-Trennzeilen parameterabhängig generiert.
      Datenbankfeldinhalt des Feldes $html des Datensatzes mit Inhalt "test" im Feld $htmlinhalt aus der DB layout:
      ---Anfang dbfeldinhalt Feld $html
      <table>
      <tr><td>$feld</td></tr>
      ${ \&tz(1,5,$fh) }
      </table>
      
      ---Ende dbfeldinhalt
      im Template wird der Datensatz geholt:
      get "htmlinhalt==test" "layout";
      
      dann soll der Feldinhalt ausgegeben werden unter Ersetzung der Variablennamne und interpolierten Subausgaben
      mit eval geht es so einwandfrei:
      ---schnipp
      $tab_ausgabe = eval "<<EOF;\n$html\EOF\n\n";
      out $tab_ausgabe;
      
      ---schnapp

      mit regex in folgender Art werden nur die Variablen ersetzt, die Subaufrufe aber nicht, die Zeile wird im Klartext mit eingesetztem Variableninhalt für $fh angezeigt :-((
      ---schnipp
      ($tab_ausgabe = $html)=~ s/\$([a-z_]\w+)/$$1/gie; # das ist CBs Regex
      out $tab_ausgabe;
      
      ---schnapp
      Hat da jemand vielleicht ne Idee, wie man das bauen könnte, damit es auch fix läuft? - das ist zur kompletten Trennung von Funktion und Content ja zwingend erforderlich und bei grossen Anwendungen dann werden die Laufzeiten mit eval wirklich inakzeptabel (weit über 1-2 Sekunden, das machen die Provider dann nicht mehr mit....

      Danke für Tipp
      Ruben

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Sonntag, 21.März.2004, 18:37.
    noch ne URL dazu zum angucken auch der Laufzeitunterschiede

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Montag, 22.März.2004, 18:04.
    Re: @Perler - Ersetzung von Variablen in "Template"-Texten / regex bzw. eval

      Weiss garnich mehr was bei dem Thread mit H.Fehde rausgekommen ist, ging n paar mal hin- und her...

      Wenn Du & auch mit ausgeführt haben willst, kannstes ja einfach einbauen, ca. so:

      ($tab_ausgabe = $html)=~ s/([&\$])([a-z_]\w+)/$1.$2/giee;

      nich getestet ;-)

     Antworten


     
 Liste der Einträge von 31351 bis 31501:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.05s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!