• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

trouble mit regexp und eigenem tpl system

  • Ersteller Ersteller chillmaster
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
C

chillmaster

Guest
Hi,

ich bin gerade dabei mein veraltetes tpl system wieder aufzufrischen und ein paar neue funktionen hinzuzufügen. nun will ich es gestatten das man bsp:

{if variable = "kaka"}lala{else}kkak{/if} schreiben kann.

nun jetzt bleib ich aber am regexp hängen obwohl ich die schon gut drauf habe:

das ganze sieht so wies ist jetzt im klartext so aus:

PHP:
$file = ereg_replace('/({if)(.*?)(})/i', '<?PHP if ($2)', $file);

und hier der php code

PHP:
$file = ereg_replace('/('.$this->left_delimeter.'if)(.*?)('.$this->right_delimeter.')/i', '<?PHP if ($2)', $file);

und die fehlermeldung sieht wie folgt aus:

Warning: ereg_replace() [function.ereg-replace]: REG_BADRPT in C:\Programme\xampp\htdocs\template\class.php on line 83


Danke
 
Hi,
schon mal den Suchdienst deiner Wahl befragt?
Hier würdest du z.B. herausfinden, was es mit dieser Fehlermeldung auf sich hat.
ereg_replace() verlangt einen regulären Ausdruck. In diesem Fall : "\*".
* ist ein Quantifier, der ein Zeichen verlangt, was nicht da ist =>
REG_BADRPT.

Weiterhin ist dir doch sicherlich der Manualeintrag zur Funktion ereg_replace bekannt, oder?
Tip: preg_replace(), which uses a Perl-compatible regular expression syntax, is often a faster alternative to ereg_replace().

Das aber nur am Rande. Das hat ja nicht direkt etwas mit deinem Problem zu tun. Ich hielt es nur für sinnvoll es zu erwähnen, weil du ja so auf Performance stehst!

Grüße, Ben.
 
ich weiß das preg_replace langsam ist, und das ist auch das einzige von 3000 zeilen code, sonst ging alles mit str_replace.. ja bei google tippte ich:
REG_BADRPT

ein und dann musste ich lesen das ich escapen muss. Gut das war mir schon klar, nur wie?

'\' gibt ein fehler, weil das ' nach \ als ' im quelltext ausgegben wird. wie kann ich die variable sonst noch escapen?

ACH JETZA. mensch bin ich blöd.. die ganze zeit benutz ich preg_replace.. wie kam ich jetzt dazu eregi bzw ereg zu benutzen!?. Muss wohl nen denkfehler gewesen sein.
 
'\' gibt ein fehler, weil das ' nach \ als ' im quelltext ausgegben wird. wie kann ich die variable sonst noch escapen?
Hat sich das jetzt durch die Verwendung einer alternativen Funktion von selbst gelöst? :shock:
Da hätt ich ja tatsächlich was Neues gelernt. :lol:

Oder habe ich das falsch verstanden?

Grüße, Ben.
 
na siehste, es geht auch netter.

ja es hat sich jetzt mit preg_replace gelöst.

PHP:
<?php
$file = preg_replace('/('.$this->left_delimeter.'if)(.*?)('.$this->right_delimeter.')/','<?PHP if ($2){ ?>', $file);
?>
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben