html datei parsen mit ob_start()...

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

  • html datei parsen mit ob_start()...

    Hey,
    ich wollte eine html-datei parsen, was mir dann auch irgendwie gelungen ist.
    In der html-datei befinden sich 2 'variablen', welche mit einen in einem Array festgelegten string ersetzt werden sollen.
    Beim ersten Versuch bin ich leider gescheitert, hier mal der code:
    PHP-Code:
        $stringArray = array("\$titel" => "Seitentitel",
                             
    "\$test" => "Teststring");
        
        function 
    callback($buffer)
        {
            global 
    $stringArray;
            foreach(
    $stringArray as $key => $value):
                return 
    str_replace($key$value$buffer);
            endforeach;
        }
        
        
    ob_start("callback");
        
        echo 
    implode(""file("./default/index.html"));
        
    ob_end_flush(); 
    Hier wurde nur die erste Variable ersetzt, was wohl am return liegt, welches die foreach Schleife ja unterbricht. Hab dann auch versucht mit:
    PHP-Code:
        $buffer str_replace($key$value$buffer); 
    Da blieb dann aber der Bildschirm weiß. Habs dann umgeschrieben und so hats dann funktioniert:
    PHP-Code:
        $stringArray = array("\$titel" => "Seitentitel",
                             
    "\$test" => "Teststring");
        
    ob_start();
        include(
    "./default/index.html");
        
    $content ob_get_contents();
        
    ob_end_clean();

        foreach(
    $stringArray as $key => $value):
            
    $content str_replace($key$value$content);
        endforeach;
        
        echo 
    $content
    Jetzt würde mich nur noch interessieren was an der ersten Version falsch war, bzw ob das so überhaupt funktioniert hätte.

    mfg jmd

  • #2
    Na ich weiss ja nicht, warum nicht file_get_contents und str_replace?
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Weg damit:
      PHP-Code:
          ob_start();
          include(
      "./default/index.html");
          
      $content ob_get_contents();
          
      ob_end_clean(); 
      Ersetzen durch:
      PHP-Code:
          $content file_get_contents("./default/index.html"); 
      Und die Schleife kannst du durch die Verwendung der zweiten Version von strtr() auch noch eliminieren.
      Wir werden alle sterben

      Kommentar


      • #4
        Ganz einfach, ich kannte die funktion bis jetzt gar nicht (bin anfänger) .
        Habs gerade versucht und funktionert auch ganz gut, und zudem ist es noch weniger zu schreiben ;P. Wie ist denn jetzt zum Vergleich der beiden methoden die bessere (von der performance her) ?

        Kommentar


        • #5
          Wie ist denn jetzt zum Vergleich der beiden methoden die bessere (von der performance her) ?
          Probiers doch aus....
          Wir werden alle sterben

          Kommentar


          • #6
            Ich rate einfach mal.. 10 Codezeilen Parsen, oder nur 1.. Hmm was wird da wohl performanter sein ..
            gruss Chris

            [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

            Kommentar


            • #7
              Nach meinen kleinen test eben ist die methode mit file_get_contents meistens um die 60-80% schneller

              Kommentar


              • #8
                Nicht immer das Rad neu erfinden, eher mal in´s Manual gucken. Für so einfache sachen gibts meist eine fertige Funktion.
                gruss Chris

                [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

                Kommentar


                • #9
                  OK das mit den 60-80% war ein wenig übertrieben, hab in einem Benchmark die funktionen 10 mal zu jeweils 1000 mal aufgerufen, und dabei ist file_get_contents um ca 30%-32% schneller, wer sich den code ansehen will kann das hier tun: nopaste.info - free nopaste script and service

                  Kommentar


                  • #10
                    wer sich den code ansehen will kann das hier tun:
                    strtr() ist ja noch gar nicht eingebaut.....
                    Überlesen?
                    Oder egal?
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      Zitat von jmd Beitrag anzeigen
                      Hier wurde nur die erste Variable ersetzt, was wohl am return liegt, welches die foreach Schleife ja unterbricht. Hab dann auch versucht mit:
                      PHP-Code:
                          $buffer str_replace($key$value$buffer); 
                      Da blieb dann aber der Bildschirm weiß.
                      Vermutlich, weil deine Callback-Funktion dann gar nichts mehr zurückgegeben hat ...?
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Zitat von combie
                        strtr() ist ja noch gar nicht eingebaut.....
                        Ou, das hab ich wirklich Überlesen ^^ werds gleich mal ausprobiern.
                        Zitat von wahsaga
                        Vermutlich, weil deine Callback-Funktion dann gar nichts mehr zurückgegeben hat ...?
                        Jetzt wo du es erwähnst, das hab ich ganz vergessen thx für den Hinweis.

                        Kommentar

                        Lädt...
                        X