Dumme Frage! -> geparstes File in String einlesen

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

  • Dumme Frage! -> geparstes File in String einlesen

    Ich kann mir vorstellen, ein jeder nervt sich ob dieser Frage, trotzdem! Ich raffs echt nicht! Wie kann ich ein php File im lokalen Dateisystem parsen lassen und das Ergebnis in einen String einlesen?..
    Das Szenario ist das folgende:
    Ich möchte gerne Funktionen einer Webseite nutzen, die leider noch nicht "view von controler" getrennt haben...
    Nun arbeite ich mit einem Template System, so kann ich gediegen die Ausgabe vom Code trennen. Mein Webdesign-Vorgänger hat diese Möglichkeiten jedoch noch nicht genutzt, trotzdem sollten nun einige bereits vorhandene Funktionen übernommen werden. Damit dies nun fürs erste mal so bleiben kann, möchte ich gerne die vorhandenen *.php Files nutzen, die die Formulare verarbeiten und eine entsprechende Ausgabe produzieren. Ich habe mir nun einen Kontroller gebaut, der eine Template Seite für das Formular einbindet, wenn der Button des Formulars nicht gedrückt wurde. Sobald der Button gedrückt wurde, also
    PHP-Code:
    $_POST['senden']==TRUE
    gilt, soll ein anderes Template File ausgegeben werden. Dieses sollte wiederum das Ergebnis eines weiteren PHP Files ausgeben, also eines solchen "zu parsenden" PHP Files. Dieses "geparste PHP File" sollte demnach in einen String ausgegeben werden, sodass dieser String dem Template File zugeordnet werden soll...
    Ganz doof...., naja, ich möchte irgendwie sowas erreichen:
    PHP-Code:
    $output_view['inhalt'] = parse_this_file_to_a_string("control/parseme.php"); 
    ...kann mir jemand einen Tipp geben, wie ich das erreichen könnte?...
    Vielen Dank bereits im Voraus!
    Grüsse
    fidelio
    Zuletzt geändert von fidelio; 03.09.2006, 20:09.

  • #2
    keine ahnung, was du parsen willst, aber dateien auslesen kannst du zum beispiel mit fread
    sonst musste vllt nochmal verdeutlichen, was du meinst...

    Kommentar


    • #3
      Das Problem hier ist, dass Funktionen wie fread, file_get_contents oder auch require oder include die Inhalte der Dateien direkt in den Ausgabepuffer knallen, ich möchte jedoch die entsprechenden Files erst geparst und dann das Ergebnis in eine String Variable eingefügt erhalten.
      Ich möchte also gerne, dass ein File mit Inhalt wie in etwa:
      PHP-Code:
      <?php
      echo "<form...";
      $MySQL_query=..;
      blabla.... ;
      echo 
      "</form>";
      ?>
      "geparst" wird und das Ergebnis in einer String Variable endet. Sodass also mein
      PHP-Code:
      $output_view['content'] = parse_this_file_into_a_string("control/parsme.php"); 
      Zu guter Letzt in meine Template Seite eingefügt werden kann....
      PHP-Code:
      $TPLOut->__set($output_view); 
      Das klingt sicherlich etwas abstrus, sorry für meine doofe Frage, issja auch nur ne Art "Notlösung", doch ich brauchs nun einfach...

      Kommentar


      • #4
        Original geschrieben von fidelio
        Das Problem hier ist, dass Funktionen wie fread, file_get_contents oder auch require oder include die Inhalte der Dateien direkt in den Ausgabepuffer knallen, ich möchte jedoch die entsprechenden Files erst geparst und dann das Ergebnis in eine String Variable eingefügt erhalten.
        Schau nochmal ins Manual zu fread und file_get_contents!

        Und vielleicht auch zu allow_url_fopen, ein Aufruf wie
        PHP-Code:
        $string file_get_contents('http://...'); 
        scheint doch genau das zu sein, wonach du suchst.

        Kommentar


        • #5
          du kannst ja auch den buffer umleiten. siehe mal diesen thread

          http://php-resource.de/forum/showthr...nts#post473513
          mfg

          Kommentar


          • #6
            Vielen Dank!
            Leider funktioniert das mit der Buffer-Umleitung nicht. Wäre jedoch sicherlich ne gute Idee!...
            Irgendwie mach ich wohl was falsch... Hier das bisschen Code, das daraus entstehen würde:
            PHP-Code:
            function Parse_this ($file) {
                
            ob_start();
                
            readfile ($file);
                
            $output ob_get_contents();
                
            ob_end_clean();
                return 
            $output;
            }


            if (isset(
            $_POST['send'])) {
                
            $output_view['content'] = Parse_this("control/check.php");    
                
            $TPLOut=new DTemplate("view/check.tpl.html");
                
            TPLWrap($TPLOut);
                
            $TPLOut->__set($output_view);
                
            $TPLOut->out();
            }
            else {
                
            TPLOut("view/whois.tpl.html");

            Das Problem ist, dass der Inhalt der Ausgabe immer erst am Schluss der Datei (dem view/control/check.tpl.html) hinzugefügt wird oder eben am Anfang der Datei steht...
            Ich kriegs nicht hin, dass die Ausgabe der php Files in einen String eingelesen werden um diese Strings anschliessend in eine Template Seite einzufügen...
            Kann mir niemand helfen???

            Kommentar


            • #7
              Sorry!!!!
              Ich oberidiot hab natürlich noch meine Template String falsch platziert! Daher gings nicht! Die Methode mit dem Output Buffer funktioniert wunderbar!
              Danke!!!
              Grüsse

              EDIT:
              So funktionierts:
              PHP-Code:
              function parse_this ($filename) {
                  
              ob_start();
                  include(
              $filename);
                  
              $output ob_get_contents();
                  
              ob_end_clean();
                  return 
              $output;
              }
              if (isset(
              $_POST['send']) && !empty($_REQUEST['check'])) {
                  
              $file="process/check.php";
                  
              $output_view['content'] = parse_this($file);
                  
              $TPLOut=new DTemplate("view/check.tpl.html");
                  
              TPLWrap($TPLOut);
                  
              $TPLOut->__set($output_view);
                  
              $TPLOut->out();
              }
              else {
                  
              TPLOut("view/whois.tpl.html");


              Zuletzt geändert von fidelio; 03.09.2006, 20:12.

              Kommentar

              Lädt...
              X