[Funktion] Alles zwischen {start}...{end} in einen string

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Funktion] Alles zwischen {start}...{end} in einen string

    Hallo,

    ich wollte mir mal grad eine eigene "simple" Templateklasse programmieren.


    Nun jedoch bleib ich grad dabei hängen wie ich in einer html datei alles was zwischen {start} und {end} ist in einen String rein packe.

    Hat jemand da evtl. eine Idee?

  • #2
    Re: [Funktion] Alles zwischen {start}...{end} in einen string

    Hat jemand da evtl. eine Idee?
    ja, ich.

    ...

    düdelü

    ...

    reguläre ausdrücke ...
    preg_match
    preg_match_all
    preg_replace
    preg_replace_callback

    RegExp by Sky: http://www.php-resource.de/tutorials/read/10/1/
    RegExpEvaluator: http://pcre.nophia.de/
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      Danke "derHund", hat weiter geholfen, aber wenn ich jetzt zbs.

      {if:foo:bar}
      Mach dies wenn $foo gleich $bar ist
      Und dies auch
      {if:end}

      oder

      {if:foo:bar}
      Mach dies wenn $foo gleich $bar ist
      Und dies auch
      {if:else}
      Aber nicht dies
      {if:end}

      habe, wie kann man das am besten realisieren ?

      EDIT:

      Wegen dem RegEx..
      Hab da mal was probiert:



      Aber es funktioniert nicht
      Code:
      RegEx: /((^{if:)(.*)(:)(.*)(}$))/is

      Zuletzt geändert von Skaschy; 05.10.2004, 19:18.

      Kommentar


      • #4
        Aber es funktioniert nicht
        sehr detaillierte fehlerbeschreibung!

        wo hast du denn probleme?

        - beim finden der teile?
        das ist im vergleich zum rest recht einfach ... (benutze mal das tool, damit geht das sehr schnell (besonders in der nächsten version ))

        - beim verarbeiten?
        spontan würde ich preg_replace_callback empfehlen, da aber $foo und $bar im callback nicht bekannt sind (außer sie wären global/superglobal), empfehle ich replace mit modifier e

        alternativ kannst du auch preg_match nehmen und in einem zweiten durchgang, nach der bedingungsprüfung, ersetzen.

        wie der syntax genau aussehen muß, kann ich dir nicht sagen, insbesondere deswegen, weil das tool keine callbacks/modifier e unterstützt.

        willst du konkreten code, sende bitte einen kasten jever an folgende adresse: ...

        so schwer ist imho nicht, probier mal ein wenig ....

        - pattern/subpattern finden
        - bedingung prüfen (variable variablen, imho)
        - parsen, bzw. nicht parsen

        das entweder in einer anweisung (sollte machbar sein), oder halt in mehreren, wobei es dort eventuell auch wieder probleme/aufwand mit dem wiederfinden gibt ...

        ich persönlich würde die sache sowieso anders regeln bzw. mache es anders. meine bedingungen werden im php definiert, nicht im tpl, bei if true wird der block geparsed, nicht geparste blöcke (also if false) werden sowieso gekickt und erscheinen nicht in der ausgabe ... für if else habe ich zwei blöcke, wobei ich wiederum im php entscheide, welchen ich parse ...

        vielleicht ist diese lösung einfacher zu realisieren (für mich allemal), besonders wenn ich an eventuelle unter/unter-unter-blöcke in den blöcken denke ...

        ansonsten laufen hier ettliche leute rum, die ihre eigene tpl-engine haben, die werden dort sicher auch if-blöcke haben, vielleicht äußern die sich dazu.
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar

        Lädt...
        X