RegEx-Pattern soll auf erstes Vorkommen reagieren

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

  • RegEx-Pattern soll auf erstes Vorkommen reagieren

    Hallo,

    der Betreff ist etwas unglücklich gewählt, aber ich weiß nicht, wie ich die Anforderung besser hätte beschreiben sollen.

    Ich habe eine Template-Klasse, bei der vor der Ausgabe eines Templates alle ungenutzten Marker (in der Form {MARKER}) entfernt werden sollen.

    Im Template könnte z.B. stehen:

    Code:
    <li{NAV_CLASS}><a href="{CMS_URL}/impressum/">Test</a></li>
    Ich versuche das Ganze folgendermaßen:

    PHP-Code:
    $this->template preg_replace('/\{(.*)\}/'''$this->template); 
    In $this->template steht ausschließlich HTML-Code.

    Ich dachte bisher, dass das einwandfrei funktioniert. Aber wenn eben dieser Fall eintritt, dass zwei Marker in einer Zeile stehen, dann wird daraus folgendes:

    Code:
    <li/impressum/">Test</a></li>
    Vom ersten "{" bis zum letzten "}" entfernt. Allerdings nur zeilenweise. Über neue Zeilen erstreckt sich dieses Verhalten nicht.

    Stattdessen soll logischerweise nur bis zum ersten Vorkommen von "}" entfernt werden.

    Hat jemand eine Idee?

  • #2
    $this->template = preg_replace('/{.*}/U', '', $this->template);

    oder

    $this->template = preg_replace('/{[^}]*}/', '', $this->template);
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Mit .*? statt .* funktioniert es auch. Schlag doch einmal greedy/ungreedy nach. die {} müssen natürlich noch ein Escapezeichen davor haben, aber ich denke einmal das wurde vom Forum geschluckt.

      Kommentar


      • #4
        Mit U hat es geklappt, danke!

        "{" und "}" habe ich in der Tat nicht escaped, bisher scheint es trotzdem zu funktionieren. Werd es dennoch später mal einbauen.

        Kommentar


        • #5
          Original geschrieben von jmc
          die {} müssen natürlich noch ein Escapezeichen davor haben
          Warum
          Gruss
          H2O

          Kommentar

          Lädt...
          X