Nur tatsächliche Ausgabe einer PHP-Datei bestimmen

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

  • Nur tatsächliche Ausgabe einer PHP-Datei bestimmen

    Hallo,

    bin gerade dabei (zumindest versuche ichs ), eine Seite, die nicht darauf ausgelegt ist, so zu ändern, dass Übersetzungen in verschiedene Sprachen erzeugt werden können.

    Dies sollte relativ komfortabel erfolgen, da die Übersetzungen an ein Übersetzungsbüro gehen.

    Mein Ansatz wäre als erstes gewesen, eine Datei Zeile für Zeile zu durchlaufen, nach Ausgaben zu suchen, und dazu die Zeilennummer auszugeben. Anschließend kann dann das ganze noch komfortabel verändert werden.

    Alles kein Problem, nur hapert es bei einer Sache: wie kann ich überprüfen, ob in der entsprechenden Zeile eine Ausgabe durchgeführt wird und dann wirklich NUR mehr die Ausgabe anzeigen.
    Das Problem ist, mehrere Programmierer haben an der Seite gearbeitet, einer benutzt nur echos, der andere dann HTML etc.

    Hab das inzwischen per preg_match gelöst, suche eben nach echo und html tags usw. Das Ergebnis ist jedoch leider nicht wirklcih befriedigend, da natürlich erstens einfach alles angeeigt wird was in einer Zeile steht (also bspw. echo "einf&uuml;gen erfolgreich!" und zweitens auch noch alles andere wie bspw. echo "</td>"; \"/> Zeile:1195 doppelt: ja, zu Erläuterung: ich lasse hier zusätzlich Zeilennummer ausgeben und ob der String doppelt vorkommt).

    Wäre hier sehr dankbar für einen Denkanstoss bzw. Anregungen wie man das anders lösen könnte.

  • #2
    Wäre hier sehr dankbar für einen Denkanstoss bzw. Anregungen wie man das anders lösen könnte.
    Nur den HTML Output durchsuchen vllt ?

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Hallo, danke für die Antwor.

      Genau das ist mein Problem. Wie kann ich nur das, was an den Parser gesendet wird, abfangen!?

      Stand noch nie vor so einem Problem, hab wirklich keine Lust manuell alle Ausgaben mit Variablen zu ersetzen

      Kommentar


      • #4
        Wie kann ich nur das, was an den Parser gesendet wird, abfangen!?
        Das habe ich nicht gemeint. Ich meinte eher alles durchsuchen was der Parser an den Client schickt.
        z.B. file_get_contents()

        Gruss

        tobi
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          ... einfach den Output des PHP-Skripts durch ein anderes Skript öffnen, oder? fopen() oder, wie jahlives sagt, mit file_get_contents(). Mit vorangestelltem http:// (Statt Dateisystempfad) kriegst Du damit den geparsten Output.

          Kommentar


          • #6
            Danke für deine Zeit

            Aber ich glaube ich habe mich etwas missverstädnlich ausgedrückt.
            Momentan habe ich das folgendermaßen gelöst:

            PHP-Code:
            if($file) {
                    foreach(
            $file as $key => $value) {
                        if(
            preg_match($searchstring,$file[$key])) {
                            
            $doppelt "nein";
                        
            //var_dump($file);
                            
            foreach($file2 as $key2 => $value2) {
                                if(
            $key!=$key2) {
                                    if(
            trim($file2[$key2]) == trim($file[$key])) {
                                        
            $doppelt "ja";
                                    }
                                }
                            }
                            echo 
            strip_tags(htmlspecialchars($file[$key])).'\"/>&nbsp;&nbsp;&nbsp;Zeile:<b>'.

            (
            $key+1).'</b>&nbsp;doppelt: <b>'.$doppelt.'</b><br/>';
                        }
                    }
                } 
            Wobei $searchstring im Moment "/^<|echo/" enstpricht, ich bekomme also alle Zeilen aufgelistet in denen ein echo oder "<" vorkommt.

            Nun wäre es wünschenswert irgendwie in der Lage zu sein, das reine HTML das von einem beliebigen Skript generiert und an den Browser ausgegeben wird irgendwie vom Rest zu trennen.Dann könnte ich strip_tags() benutzen und somit wirklich nur die reine Ausgabe anzeigen. pregmatch() ist in diesem Fall (oder zumindest so wie ich es angewandt habe) weder elegant noch ausreichend.

            EDIT:
            Danke, jetzt habt ihr mir auf die Sprünge geholfen. War wohl etwas zu langsam!
            Zuletzt geändert von ThemBones; 16.08.2006, 13:23.

            Kommentar


            • #7
              Hmmm...

              Jetzt bekomme ich folgende Fehlermeldung:
              failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error

              Auf die Serverlogs habe ich keinen Zugriff. Also kann ich mit Errir 500 nicht viel anfangen.

              Kommentar


              • #8
                Jetzt bekomme ich folgende Fehlermeldung:
                failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Server Error
                Wenn du was versuchst ???

                Gruss

                tobi
                Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                Kommentar


                • #9
                  wenn ich direkt auf die datei zeige.

                  sehe allerdings gerade dass sich die files ohnehin nicht direkt aufrufen lassen, vergass zu erwähnen dass es sich um includes handelt. die methode mit file_get_contents() fällt somit wohl flach.

                  Ich verzweifle hier....

                  Kommentar


                  • #10
                    Hä?
                    Du hast ein PHP-Skript, das gibt was aus.
                    Was hindert dich daran, dieses per Browser oder mit oben beschriebener Methode geparst auszulesen und fertig?
                    Was ist der Unterschied zwischen einem Include und einem lauffähigen Skript?

                    Kommentar


                    • #11
                      Diese scripts können nicht direkt aufgerufen werden. Ist wohl aus sicherheitsgründen so.

                      Naja ich schätze ich werde wohl mit obiger Lösung leben müssen, außer irgendjemand hat noch einen geistesblitz

                      Trotzdem danke für die Mühe!

                      Kommentar


                      • #12
                        Diese scripts können nicht direkt aufgerufen werden. Ist wohl aus sicherheitsgründen so.
                        Aber garantiert ist es einem Script in deinem Webspace erlaubt auf die Datei zuzugreifen --> sonst könntest du nix inkludieren. Wenn der direkte Zugriff drauf nicht funzt, dann lies den Inhalt mittels eines Scripts aus...

                        Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar

                        Lädt...
                        X