include, require, require_once usw aus Text heraussuchen

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

  • include, require, require_once usw aus Text heraussuchen

    Hallöchen,


    Hab sämtliche Manuals usw. durch... ich verstehe REGEX einfach nicht...
    Ich weiss nicht wie ich vorgehen muss wenn ich mir ein Ziel des Filterns vorgenommen habe, um die Zeichenfolgen zu definieren. Vielleicht könnte mir das mal jemand für idioten wie mich erklären, dann bleiben euch solche Fragen, die sich ja ständig wiederholen schon mal von mir erspart


    Was muss ich beim preg_match_all("hier drin",$str, $out, PREG_PATTERN_ORDER);
    benutzen, damit alle includes etc. angezeigt werden?


    ich muss dazu sagen, dass der Quelltext nicht per Include reingeholt wird, sondern mit file_get_contents um einige Auswertungen vorzunehmen.


    Wäre nett, wenn Ihr mir das auch anhand der Zeichen erklären könntet.


    Viele Grüsse
    David
    Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.

  • #2
    du willst also alles,

    include('hier')
    require('undhier')
    require(',hier,usw.')

    steht, auslesen?

    Dann lies dir mal unser entsprechendes Tutorial durch...

    Kommentar


    • #3
      Du meinst das Tutorial "Reguläre Ausdrücke" von Sky?

      Das hab ich ja auch schon durch.

      Du kannst mir wirklich glauben, dass ich es wirklich versucht habe.
      Ich schlage mir nun wirklich schon ein paar Tage mit REGEX um die Ohren.
      Aber ich kann mir einfach keinen Reim daraus machen. Du hast mir mal einen gegeben, mit dem ich funktionen herausfiltern kann.

      /(?<![a-z_0-9$])([a-z_][a-z_0-9]*)\s*\(.*\)/Ui

      Nur das Ui das $ das \s sagen wir was...
      wie ich diese anhand meiner Idee aufbaue, ist mir Schleierhaft.

      Ich bräuchte wirklich mal eine Anweisung wie:

      Wenn Du @|{³²³ in deinem Script haben willst, dann musst Du

      ein Fragezeichen benutzen, weil .....
      dann musst Du a-z benutzen, damit ....
      usw.

      Ich hoffe, dass das nicht unverschämt ist. Aber Regex gehört leider zu den Dingen, die ich mir "leicht" aneignen kann.


      Viele Grüsse

      David
      Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.

      Kommentar


      • #4
        aber das steht nun wirklich alles in dem tutorial.

        du postest ja noch nicht mal deine ansätze.

        Kommentar


        • #5
          Ich glaube zwar, dass es den Rahmen sprengt, aber ich habe bisher folgende funktion genommen:

          $str = file_get_contents($filename);
          $count = preg_match_all ("|include[ ]+(.*)[\(](.*)[\)]|U", $str, $out, PREG_PATTERN_ORDER);

          for ($i=0; $i < $count; $i++) {
          if (!eregi('array',$out[1][$i])) {
          $value = strtolower($out[1][$i]);
          array_push($defined,$value);
          }
          }

          Ich habe dann immer nach der Trial and Error Methode versucht das richtige Ergebnis zu bekommen...
          Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.

          Kommentar


          • #6
            wenn du die regex posten würdest, täte doch schon reichen.

            begründe mir zunächst mal "[]". Was willst du damit? Was steht dazu im Tut? Wenn du das wirklich gelesen hast, kann man eigentlich gar nicht auf die Idee kommen.

            Kommentar


            • #7
              kann ich dir leider nicht begründen, habe ich auf der php.net unter preg_match_all rausgesucht da stand ein Beispiel, wie man funktionen filtert. Ich weiss dass [] Aufzählungen beinhalten, aber warum es dort gerade ist, weiss ich nicht.
              Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.

              Kommentar


              • #8
                Wenn ich blind alles möglich reinhaue, komm ich sicher nicht zur Lösung.

                Du musst doch mindestens nen Ansatz, ne Idee haben, warum du was verwendest. Ansonsten kanns ja nur per Glück gehen. Programmierung sollte mit Glück aber gar nichts zu tun haben,

                Kommentar


                • #9
                  Da hast Du recht, mit Glück mache ich normalerweise auch nichts.

                  Ich kann natürlich nur die Theorie aufstellen:

                  Ein include require etc. kann folgendermassen aussehen:

                  include('Hallo.php');
                  include("hallo.php");
                  include "hallo.php"
                  include 'hallo.php';

                  das gleiche gilt für die anderen Befehle.

                  Dazu kommt noch, dass die Befehle require_once usw noch einen
                  Unterstrich beinhalten.

                  es soll gross und kleinschreibung ignoriert werden ALSO i am ende.
                  Das weiss ich. Aufzählung [a-z_A-Z][0-9] müsste eigendlich auch sein, oder? Aber mehr kann ich nicht aufzählen.
                  Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.

                  Kommentar


                  • #10
                    naja, wie man oder macht, steht im tut, charakterklassen setehen drin, ... steht eigentlich alles drin.

                    Kommentar


                    • #11
                      Ich werde es nochmal versuchen.
                      Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.

                      Kommentar


                      • #12
                        Ich kann natürlich nur die Theorie aufstellen:

                        Dazu kommt noch, dass die Befehle require_once usw noch einen
                        Unterstrich beinhalten.
                        naja, schau mal:

                        1. jede anweisung endet mit nem ;
                        2. du suchst etwas, das mit include oder require beginnt ... und mit nem semikolon endet, was dazwischen ist, kann uns je erstmal egal sein.
                        Code:
                        '/(include|require)?[^;]*;/'
                        mal so als quick&dirty ...
                        - der dateiname sollte keine ; enthalten
                        - modifier mußte dir selbst suchen, genauso ^und $
                        - preg_match_all
                        - fertig
                        OffTopic:
                        @TobiaZ: deine signatur irritiert mich irgendwie
                        Die Zeit hat ihre Kinder längst gefressen

                        Kommentar


                        • #13
                          @derHund : Vielen Dank ! Das ist schonmal Hilfreich.


                          @TobiaZ: ich habe auch mal versucht was aufzubauen:

                          /(include|require)+(.*)[\(|"](.*)["|\)]/i

                          das habe ich mir zusammengeschnipselt.

                          Das Funktioniert auch mehr oder weniger
                          Die meiste Unwissenheit könnte besiegt werden. Wir eignen uns nur deshalb keine Kenntnisse an, weil wir sie nicht wünschen.

                          Kommentar

                          Lädt...
                          X