Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   PCRE: Hilfe gesucht (https://www.delphipraxis.net/49301-pcre-hilfe-gesucht.html)

alcaeus 8. Jul 2005 17:19

Re: PCRE: Hilfe gesucht
 
Zitat:

Zitat von Christian S.
Das macht doch mein obiges Beispiel oder habe ich das Wochenende wirklich so dringend nötig? :gruebel:

Ja, hast du :lol:

das da:
Code:
blah {FOO} blah
wird bei deinem Code naemlich auch nicht ersetzt ;)

Ich studiere mich immer noch durch die PCRE-Doku, aber so langsam kommt mir vor, dass das nicht geht. :-? Ich versuchs mal weiter, falls es nicht klappt, wird das viel Denkarbeit geben, aber erstmal gibts einen grossen Dank fuer eure Hilfe. Falls noch jemandem was einfaellt, koennt ihr es aber trotzdem gerne sagen ;)

Greetz
alcaeus

jfheins 8. Jul 2005 17:22

Re: PCRE: Hilfe gesucht
 
Ja, du hast es nötig :mrgreen:

Bei folgendem Code:
Code:
<?

header ("Content-Type: text/plain");

$text = "blah blah
bla {FOO} bla2";

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

echo $text;

?>
Kommt das raus:
Zitat:

blah blah
bla {FOO} bla2
Und mit diesem (leicht abgeändertem) Code:
Code:
<?

header ("Content-Type: text/plain");

$text = "blah blah
bla {FOO} bla2";

$text = preg_replace('#[color=#ff0000](#is', 'BAR', $text);

echo $text;

?>
Kommt das raus:
Zitat:

blah <!-- IF BAR blah
bla {FOO} bla2
Alci will das aber so:
Zitat:

blah blah
bla BAR bla2
(Doppelt hält besser, nicht wahr alci ? :mrgreen: )

Christian S. 8. Jul 2005 17:36

Re: PCRE: Hilfe gesucht
 
Hm. Stimmt, das geht nicht. Wenn man den Beginn des Kommentars in das "Du darfst nicht" mir rein nimmt, matcht er zu wenig und ignoriert das einfach. :-(

alcaeus 8. Jul 2005 17:39

Re: PCRE: Hilfe gesucht
 
So, ich nehme jetzt einfach den Weg drumrum, und arbeite mit 3 expressions:
Code:
$text = "blah blah {SOMEVAR}";

$text = preg_replace('##is', '_special_if_\\1', $text);
$text = preg_replace('#\{([a-z0-9\-_]*?)\}#is', 'BAR', $text);
$text = preg_replace('#_special_if_([a-z0-9\-_]+)#is', '', $text);
Das ergibt nach dem ersten replace das:
Code:
blah _special_if_FOO blah {SOMEVAR}
Nach dem zweiten:
Code:
blah _special_if_FOO blah BAR
Und nach dem dritten kommt das raus:
Code:
blah blah BAR
Funktioniert perfekt, vielen Dank fuer eure Hilfe :)

Greetz
alcaeus

jfheins 8. Jul 2005 19:01

Re: PCRE: Hilfe gesucht
 
Es gibt dann aber ein Problem, wenn "_special_if_FOO" im Ausgangstext auftaucht :stupid:

In dieser Hinsicht wäre es vielleicht besser, die ifs mit preg_match_all zu finden und zu entfernen, dann die Variablen zu ersetzen, und danach die ifs wieder erinzufügen :angel2:

alcaeus 8. Jul 2005 19:03

Re: PCRE: Hilfe gesucht
 
Moin Julius,

ja, da hast du (vielleicht) Recht. Nachdem ich aber selbst die Template-Variablen bestimme, hab ich das Problem nicht *g*
Ich arbeite zur Zeit aber noch an einer erweiterten Version der Expression, um auch verschachtelte Ausdruecke unter Verwendung mehrerer Variablen zuzulassen ;)

Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:22 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz