AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PCRE: Hilfe gesucht

Ein Thema von alcaeus · begonnen am 8. Jul 2005 · letzter Beitrag vom 8. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#1

PCRE: Hilfe gesucht

  Alt 8. Jul 2005, 17:19
Hallo ihr,

ich scheitere langsam an einer regulaeren Expression. Zur Zeit sieht sie so aus:
Code:
$code = preg_replace('#\{([a-z0-9\-_]*?)\}#is', $something, $code);
Damit werden in der Template-Engine vom phpBB die Variablen ("{SOMEVAR}") ersetzt. Nachdem ich zur Zeit versuche, If-Bloecke einzubauen und dort auch solche Variablen erlaubt sein sollen, duerfen sie nur ersetzt werden, wenn kein "<!-- IF" direkt davorsteht. Das hier:
Code:
$code = preg_replace('#(^<!-- IF )\{([a-z0-9\-_]*?)\}#is', $something, $code);
hat leider nicht geklappt. weiss jemand vielleicht, wie ich die Expression aufbauen muss, damit das:
Code:
slkdjfsf {SOMEVAR} asdfjk
zwar ersetzt wird, das hier:
Code:
klsdjfa aslfkj
aber nicht?
Irgendwie scheitere ich immer an diesen Expressions

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: PCRE: Hilfe gesucht

  Alt 8. Jul 2005, 17:22
Ich würde das hier vorschlagen:
Code:
$code = preg_replace('#^(<!-- IF )\{([a-z0-9\-_]*?)\}#is', $something, $code);
Gehts denn so?
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#3

Re: PCRE: Hilfe gesucht

  Alt 8. Jul 2005, 17:29
Hallo Dax,

vielleicht liegt es auch nur daran, dass ich in diesem Fall nicht mehr \\1 verwenden darf, um mit dem Match zu arbeiten. Ich zeige mal die gesamte Zeile:
Code:
$code = preg_replace('#\{([a-z0-9\-_]*?)\}#is', "\$this->_tpldata['.'][0]['\\1']", $code);
Auf alle Faelle wird bei deiner Loesung leider auch das "<!-- IF " als Match erkannt und deshalb verwendet
Hast du vielleicht sonst noch irgendwelche Vorschlaege?

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: PCRE: Hilfe gesucht

  Alt 8. Jul 2005, 17:35
Naja ...
du könntest natürlich auch den Template-Text durchgehen,
und dann immer nur alles ausserhalb der Kommmentare durch die Ersetzung schicken,
aber das dürfte nicht allzu schnell sein ...

Oder aber du verwendest einfach andere Klammern für die If-Abfrage
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

Re: PCRE: Hilfe gesucht

  Alt 8. Jul 2005, 17:36
Dann kann ich nur mit if() dienen:
Code:
if(preg_match("#", $code)
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#6

Re: PCRE: Hilfe gesucht

  Alt 8. Jul 2005, 17:39
@Julius: das hab ich schon mal probiert. Auch wenn die Templates gecached werden, das Cachen dauert mehr als 30 Sekunden wenn ich das in jeder Zeile mache
In $code steht eben der gesamte Text der Template-Datei drin, und es waere eben schoen, wenn ich das in der gleichen Expression machen koennte. Egal, ich zwinge mich jetzt mal durch die PCRE-Doku, jetzt habt ihr eine Weile Ruhe

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: PCRE: Hilfe gesucht

  Alt 8. Jul 2005, 17:49
Hmmm ... joa, 30 sek. sind nicht so gut ...

Du könntest vielleicht so als speedup folgendes machen:

Wenn keine speedup (oder wie auch immer) -Datei existiert:
Templatetext aufwändig durchsuchen, und eine speedup (oder wie auch immer) -Datei anlegen, in der dann steht:
Code:
somevar:23,45,87,132
someother:35,75,231
also erst die variablennamen und dahinter ihre zu ersetzenden Positionen im Text.
Du musst also dann nicht mehr jedesmal alle Variablen mit preg_replace oder so ersetzen, sondern du öffnest diese speedup-Datei und ersetzt gezielt die notierten Vorkommen.
Damit dürfte das ersetzen erheblich schneller gehen (zumindest ab dem 2. mal) und du kannst dich auf deine If-Abfragen konzentrieren

Da ein Template ja nicht ständig gewechselt wird, dürfte das ja insgesamt nicht allzuviel Zeit kosten ...
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#8

Re: PCRE: Hilfe gesucht

  Alt 8. Jul 2005, 17:55
Hallo!

So geht es bei mir:
Code:
<?php

$text = "blah blah";

$text = preg_replace('##is', 'BAR', $text);

echo $text;

?>
Man muss ein bisschen aufpassen, weil man duch das IF auch ein Leerzeichen mit hinein bekommt.

Grüße
Christian

//Edit: Okay, das mit dem Leerzeichen war bei obigen Codes auch in Ordnung. Hatte mich verguckt.
//Edit2: Ist nicht exakt die selbe Ersetzung wie gewünscht, aber wenn ich den Kommentar nicht mit ersetzte, war es so unbequem zu gucken, ob richtig ersetzt wurde Anpassung sollte nicht schwer sein
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

Re: PCRE: Hilfe gesucht

  Alt 8. Jul 2005, 18:12
So wie ich das sehe, ist das genau falschrum ^^

raus kommt:
Code:
blah <!-- IF BAR blah
bla {FOO} bla2
Ich diagnostiziere: {0} als "darf nicht da sein" funktioniert nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#10

Re: PCRE: Hilfe gesucht

  Alt 8. Jul 2005, 18:15
Hi!

ich gehe mal von diesem "Auftrag" aus

Zitat von alcaeus:
weiss jemand vielleicht, wie ich die Expression aufbauen muss, damit das:
Code:
slkdjfsf {SOMEVAR} asdfjk
zwar ersetzt wird, das hier:
Code:
klsdjfa aslfkj
aber nicht?
Das macht doch mein obiges Beispiel oder habe ich das Wochenende wirklich so dringend nötig?

Grüße
Christian
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz