Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [PHP] Parsen mit Regex (https://www.delphipraxis.net/77514-%5Bphp%5D-parsen-mit-regex.html)

3_of_8 20. Sep 2006 16:27


[PHP] Parsen mit Regex
 
Morgen. Ich möchte mir in einem Text jedes Vorkommen von '{wuppdi}' durch $this->variables["wuppdi"] ersetzen lassen.

Dazu habe ich folgendesn Code:
Code:
<?php

define("TEMPLATE_DIR", "./templates/");
define("TEMPLATE_EXT", ".tpl");

class TemplateEngine {

  var $variables;

  function TemplateEngine() {
    $variables=array();
  }

  function parse($template) {
    return preg_replace('#{[A-Za-z0-9_]*}#is', '\\0',
        implode(file(TEMPLATE_DIR.$template.TEMPLATE_EXT)));
  }

  function output($template) {
    print($this->parse($template));
  }

}

?>
Prinzipiell schonmal ein Anfang, das ersetzt mir prima {wuppdi} durch {wuppdi}.

So, jetzt die Frage: Wie bringe ich das Viech dazu, {wuppdi} durch $variables["wuppdi"] zu ersetzen?
$variables["\\0"] geht ja nicht...

Khabarakh 20. Sep 2006 16:34

Re: [PHP] Parsen mit Regex
 
Schonmal in die Hilfe geschaut :gruebel: ?
Zitat:

Mit dem Modifikator e wird der Parameter Ersatz nach den entsprechenden Ersetzungen der Referenzen von preg_replace() wie PHP-Code behandelt. Tipp: Stellen Sie sicher, dass Ersatz gültigen PHP-Code erzeugt, weil sich PHP sonst über einen Syntaxfehler (parse error) in der Zeile beschwert, die den Aufruf von preg_replace() enthält.

3_of_8 20. Sep 2006 16:56

Re: [PHP] Parsen mit Regex
 
Ja, etwa 10 mal, schlau geworden bin ich daraus auch ned wirklich.

Waldteufel 20. Sep 2006 17:07

Re: [PHP] Parsen mit Regex
 
So?

Code:
function parse($template) {
  return preg_replace('#{[A-Za-z0-9_]*}#ise', '$this->variables["\\0"]',
        implode(file(TEMPLATE_DIR.$template.TEMPLATE_EXT)));
}
:gruebel:

Gruß,
Waldteufel

3_of_8 20. Sep 2006 17:12

Re: [PHP] Parsen mit Regex
 
Habs jetzt selber rausgefunden:

Code:
function parse($template) {
  return preg_replace('#{[A-Za-z0-9_]*}#ise', '$this->variables[substr("\\0", 1,
    strlen("\\0")-2)]', implode(file(TEMPLATE_DIR.$template.TEMPLATE_EXT)));
}
War ja ne schwere Geburt... :wall:
Ich bin manchmal so begriffsstutzig.

alcaeus 20. Sep 2006 18:03

Re: [PHP] Parsen mit Regex
 
Weisst du, du koenntest erstens + anstatt * verwenden, dann noch Klammern um den Ausdruck setzen, dann sparst du dir auch den seeehr performanten substr()-Aufruf. Guck dir mal die Hilfe dazu an ;)

Code:
function parse($template) {
  return preg_replace('#{([A-Za-z0-9_]+)}#ise', '$this->variables["\\1"]',
        implode(file(TEMPLATE_DIR.$template.TEMPLATE_EXT)));
}
Greetz
alcaeus


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:16 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