Ankündigung

Einklappen
Keine Ankündigung bisher.

RegEx Hölle

Einklappen

Neue Werbung 2019

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

  • RegEx Hölle

    Kennt jemand eine gute Webseite die RegEx für Dummies erklärt?

    Ich will bestimmte Links einer Webseite filtern, aber RegEx raff ich nicht

  • #2
    Regex eignet sich nicht für sowas. Nimm einen HTML-Parser wie zB. DOMDocument und XPath dazu.

    Kommentar


    • #3
      Welche Seiten kennst du denn schon und hast sie durch?
      Hier mal was auf deutsch.
      zum Testen ist regex101.com geiegnet
      regex Tutorial komplett auf englisch

      Kommentar


      • #4
        http://regexp-evaluator.de/tutorial/ finde ich auch ganz gut und auch in deutsch.

        Bitte den Hinweis von #2 beachten! RegEx ist nicht dafür gedacht HTML/XML zu parsen.
        The string "()()" is not palindrom but the String "())(" is.

        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
        PHP.de Wissenssammlung | Kein Support per PN

        Kommentar


        • #5
          Danke euch! werde ich mir mal zu Gemüte führen.

          Kommentar


          • #6
            Zum Thema DOMDocument und DOMXPath kannst Du hier etwas nachlesen: http://www.php-rocks.de/thema/74-ein...-domxpath.html
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              PHP-Code:
              <?php
              $file 
              "quelle3.html";
              $doc = new DOMDocument();
              $doc->loadHTMLFile($file);

              $xpath = new DOMXpath($doc);

              $elements $xpath->query("//*[@class='Grid-item']");

              if (!
              is_null($elements)) {
                foreach (
              $elements as $element) {
                  echo 
              "<br/>"$element->getAttribute('href');

                }
              }
              ?>
              Ich habe schon etwas gebastelt was funktioniert, danke!
              Jetzt muss ich nur noch rausfinden wie ich es von der URL direkt bekomme.
              Im Browser Datei speichern unter bringt die richtige Seite, aber zB: mit file_get_contents nicht, da fehlt das meiste. Die Seite ist mit reactJS geschrieben.

              Kommentar


              • #8
                PHP-Code:
                $doc->loadHTMLFile($url); 

                Kommentar


                • #9
                  Zitat von hellbringer Beitrag anzeigen
                  PHP-Code:
                  $doc->loadHTMLFile($url); 
                  Da kommt dann aber auch nicht mehr als mit file_get_contents.

                  Sein Problem ist ja das Javascript, denke ich. Das wird natürlich, wenn es externe Dateien sind nicht mitgeladen und wenn es keine externen Dateien sind, wird es dennoch nicht ausgeführt, weshalb im Browser immer ein anderes Ergebnis zu sehen sein wird als wenn man nur HTML mit PHP herunter lädt.


                  Kommentar


                  • #10
                    Genau das, ich denke ich muss es irgendwie mit Javascript laden und dann an die Php Datei übergeben, dazu habe ich mir aber noch keine Gedanken gemacht. Aber glücklicherweise muss ich mich schon mal nicht mehr mit RegEX rumschlagen

                    Kommentar


                    • #11
                      Zitat von chim Beitrag anzeigen
                      Genau das, ich denke ich muss es irgendwie mit Javascript laden und dann an die Php Datei übergeben, dazu habe ich mir aber noch keine Gedanken gemacht. Aber glücklicherweise muss ich mich schon mal nicht mehr mit RegEX rumschlagen
                      Du musst eben schauen, woher JavaScript die Daten lädt und das nachbauen. Aber davon abgesehen ist das generell keine gute Sache, die du vor hast. Dann braucht der Betreiber nur eine Kleinigkeit ändern, und schon ist deine Anwendung kaputt. Besser wäre es, du fragst den Betreiber, ob er dir nicht eine API zur Verfügung stellen kann, die du dann ansprichst.

                      Kommentar


                      • #12
                        Danke, ja ich hatte überlegt mit jquery die Seite zu laden, warten bis sie aufgebaut ist und dann den Quellcode zu ziehen.
                        Ist nur eine Spielerei für meine Faulheit, nichts großes. Das Beispiel war für IMGUR. Ja ich weiß Sie haben eine API die man dafür bequem nutzen kann.

                        Ich möchte das aber generell programmieren damit es mit kleinen Anpassungen für verschiedene Seiten passt. zb: Google Trends, die Nachrichtenlinks, dort ist es aber Angular was eingesetzt wird.

                        Kommentar


                        • #13
                          Zitat von chim Beitrag anzeigen
                          Danke, ja ich hatte überlegt mit jquery die Seite zu laden, warten bis sie aufgebaut ist und dann den Quellcode zu ziehen.
                          Das wird nicht gehn, weil du mit JavaScript keinen Zugriff auf die andere Seite hast. Du müsstest schon ein Browser-Plugin schreiben.

                          Kommentar


                          • #14
                            Hm Mist, wie gesagt hab mir noch keine Gedanken gemacht...Das Browser Plugin wäre mit Kanonen auf Spatzen schießen.

                            Kommentar


                            • #15
                              Wo soll das am Ende laufen?
                              Eventuell könntest du was mit z.B. Phantom bauen, das rendert dir auch JS, da dann letztlich das DOM abholen und an dein Script durchreichen.
                              VokeIT GmbH & Co. KG - VokeIT-oss @ github

                              Kommentar

                              Lädt...
                              X