Ankündigung

Einklappen
Keine Ankündigung bisher.

Thema: reguläre Ausdrücke

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Thema: reguläre Ausdrücke

    Guten Tag liebe Community,

    ich versuche mich gerade mit regulären Ausdrücken in PHP. Absolutes neu Land für mich und ich verstehs nicht wirklich.

    Ich möchte in einer HTML Datei, die in eine Variable gespeichert wird, nach bestimmten Zeichenketten suchen und ersätzen.

    PHP-Code:
    $html "abcdef (include file=\"header.tpl\") sfsdfsdfsdf";
    $suchmuster "/{include file=\"(.*)\.(.*)\"}/";
    while(
    preg_match($suchmuster$html)){
      echo
    "ok"//preg_replace.... 


    Mein problem ist einfach, dass ich nicht den passenden Ausdruck finde *g* Entweder bekomme ich eine Endlos Schleife oder es funktioniert gar nicht

    Wie muss ich den Ausdruck schreiben? Wenn ein Platzhalter wie z.B. (include file="header.tpl") vorkommt?

    Gruß
    Kalicki2k

  • #2
    Du solltest das nicht in der Schleife machen, sondern preg_match_all nutzen.

    PHP-Code:
    $suchmuster "/\(include file=\"(.*)\.(.*)\"\)/"
    "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

    Kommentar


    • #3
      preg_match brauchst in diesem Fall eigentlich garnicht, das geht auch ganz alleine mit preg_replace_callback und das wahrscheinlich sehr viel performanter.

      Dein Pattern hat zwei kleine Fehler, das von Destruction sollte besser funktionieren.

      Kommentar


      • #4
        Zitat von draco88 Beitrag anzeigen
        preg_match brauchst in diesem Fall eigentlich garnicht, das geht auch ganz alleine mit preg_replace_callback und das wahrscheinlich sehr viel performanter.

        Dein Pattern hat zwei kleine Fehler, das von Destruction sollte besser funktionieren.
        naja... die "{}" sind schon Fehler
        "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

        Kommentar


        • #5
          Zitat von kalicki2k Beitrag anzeigen
          Entweder bekomme ich eine Endlos Schleife oder es funktioniert gar nicht
          Wenn du in einer Endlosschleife landest dann ist der Pattern korrekt:
          Return Values

          preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match() will stop searching after the first match.
          [MAN]preg_match[/MAN] (trotzdem musst du aber [MAN]preg_match_all[/MAN] benutzen^^)
          MfG

          Kommentar


          • #6
            Willkommen im Forum!

            Damit Du hier nicht mit dem falschen Fuß einsteigst beherzige bitte diesen Thread.
            Wichtige Punkte:
            • Wir helfen gern, wenn Du Initiative zeigst. Macht mal ist nicht.
            • Bitte benutze die Code-Box-Buttons und poste relevanten Code.
            • Bitte stelle verständliche Fragen in ordentlicher Sprache. Sei prägnant!
            • Bitte verwende für spätere Leser einen Threadtitel, der das Problem kurz beschreibt
            • Bitte drängle nicht.
            • Bitte markiere abgeschlossene Themen über den "Erledigt"-Link oben links.


            [MOD: verschoben]
            [COLOR="#F5F5FF"]--[/COLOR]
            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
            [COLOR="#F5F5FF"]
            --[/COLOR]

            Kommentar


            • #7
              Danke für die vielen Antworten. Aber ich blick da echt nicht durch

              Versuche jetzt irgendwie mit der Funktion preg_replace_callback() nach suchmuster = "/\(include file=\"(.*)\.(.*)\"\)/"; zu suchen. Anschließend brauch ich den Wert der in include file="WERT" drin steht um mit file_get_contents() die Datei auszulesen.

              Wäre jemand vielleicht so nett und würde mir ein Beispiel bauen?

              Danke und Gruß
              Kalicki2k

              Kommentar


              • #8
                Zuerst bist DU mal dran, Infos zu liefern. Denn das sagt gar nichts aus:
                Ich möchte in einer HTML Datei, die in eine Variable gespeichert wird, nach bestimmten Zeichenketten suchen und ersätzen
                Bei reg. AUsdrücken heißt es exakt seine Anforderungen formulieren.
                [COLOR="#F5F5FF"]--[/COLOR]
                [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                [COLOR="#F5F5FF"]
                --[/COLOR]

                Kommentar


                • #9
                  Sorry, also ich möchte mir ein kleine Templatesystem bastellen und da komm ich bei meiner Parse Funktion einfach nicht weiter.

                  Ich hab eine index.tpl die ich meinem Templatesystem übergebe. In der index.tpl

                  Hab ich Platzhalter wie:
                  {include file="header.tpl"}
                  {include file="footer.tpl"}

                  Folgendes muss meine Parse Funktion können.

                  Nach Platzhaltern in der index.tpl suchen ala "{include file="header.tpl"}". Denn Wert der im Feld file steht zurückgeben und anschließend in die Funtion file_get_contents() übergeben und dann denn inhalt der header.tpl in die Variable laden.

                  Kurz gesagt ich möchte header.tpl auslesen und an die stelle einsätzen wo "{include file="header.tpl"}" steht.

                  Hab mal was aus einem anderen Templatesystem gefunden. Komme damit aber nicht wirklich klar.

                  PHP-Code:
                  private function parseFunctions() {
                          
                  // Includes ersetzen ( {include file="..."} )
                          
                  while(preg_match"/" .$this->leftDelimiterF ."include file=\"(.*)\.(.*)\""
                                             
                  .$this->rightDelimiterF ."/isUe"$this->template) )
                          {
                              
                  $this->template preg_replace"/" .$this->leftDelimiterF ."include file=\"(.*)\.(.*)\""
                                                              
                  .$this->rightDelimiterF."/isUe",
                                                              
                  "file_get_contents(\$this->templateDir.'\\1'.'.'.'\\2')",
                                                              
                  $this->template );
                          }
                      } 

                  Kommentar


                  • #10
                    Yo. Haste schön abgeschrieben. Meine Tipps:

                    - http://www.php.de/php-einsteiger/489...rundlagen.html
                    - Benutze ein fertiges Templatesystem

                    [MOD: Thread geschlossen]
                    [COLOR="#F5F5FF"]--[/COLOR]
                    [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                    [COLOR="#F5F5FF"]
                    --[/COLOR]

                    Kommentar

                    Lädt...
                    X