Preg match all für Links

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

  • Preg match all für Links

    Hey,

    da ich mit den ganzen Preg Match Generatoren und Erklärungen nicht wirklich weiter komme, frage ich euch nun um Rat..

    Nach dem Parsen einer URL (CURL) erhalte ich den content der Seite in einer Variablen. Dort sind mehrere Links nach dem gleichen Schema enthalten. Nun möchte ich alle Links in einem Array speichern.

    Preg_match_all wird da der richtige Weg sein denke ich.

    Ein Link sieht folgendermaßen aus:

    HTML-Code:
    <a href="seite.de/details.do;jsessionid=123?identifier=123"  target="_self"  class="class" >
    lediglich die jsessionid und identifier ändern sich in den Links.

    Kann mir da jemand weiter helfen?
    Vielen Dank im Vorraus!

  • #2
    Wäre das so eine option?

    Pattern:
    Code:
    #<a href="seite.de/details.do;jsessionid=[A-Z0-9]{0,40}\?identifier=[A-Z0-9]{0,40}"  target="_self"  class="class" >#

    Kommentar


    • #3
      preg_match() eignet sich nicht zum Auslesen von HTML-Code. Verwende besser einen HTML-Parser wie DOMDocument dafür.

      Kommentar


      • #4
        Zitat von Peh4pe Beitrag anzeigen
        Hey,

        da ich mit den ganzen Preg Match Generatoren und Erklärungen nicht wirklich weiter komme, frage ich euch nun um Rat..

        ...

        Preg_match_all wird da der richtige Weg sein denke ich.
        Anders gesagt: Du verstehst also die Funktionsweise eines Werkzeuges nicht, hältst es aber für geeignet, um damit dein spezielles Problem zu lösen?

        Nach dem Parsen einer URL (CURL) erhalte ich den content der Seite in einer Variablen. Dort sind mehrere Links nach dem gleichen Schema enthalten. Nun möchte ich alle Links in einem Array speichern.

        ...

        Ein Link sieht folgendermaßen aus:

        HTML-Code:
        <a href="seite.de/details.do;jsessionid=123?identifier=123"  target="_self"  class="class" >
        lediglich die jsessionid und identifier ändern sich in den Links.
        Okay ...

        Zitat von Peh4pe Beitrag anzeigen
        Wäre das so eine option?

        Pattern:
        Code:
        #<a href="seite.de/details.do;jsessionid=[A-Z0-9]{0,40}\?identifier=[A-Z0-9]{0,40}"  target="_self"  class="class" >#
        Wo ist jetzt dein Problem? Lass preg_match_all() über den Inhalt der String-Variablen laufen und dir anschließend mit var_dump() das Ergebnis anzeigen.

        Außerdem würde ich noch ein paar Plausibilitätsprüfungen machen. Sind die Zeichensätze von "jsessionid" und "identifier" wirklich auf [A-Z0-9] beschränkt? Manchmal findest du da modifizierte base64-Encodings (wie bspw. [a-zA-Z0-9=_]). Und ist 40 Bytes wirklich die maximale Länge?

        Wenn du nur an die URLs willst, dürfte auch ein kürzerer Regex reichen:

        PHP-Code:
        preg_match_all(
            
        '/href="(seite\.de\/details\.do;jsessionid=[A-Z0-9]{0,40}\?identifier=[A-Z0-9]{0,40})"/',
           
        $src,
           
        $found
        );
        var_dump($found); 
        Zuletzt geändert von fireweasel; 11.01.2015, 21:46. Grund: typo
        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

        Kommentar


        • #5
          Danke fireweasel,

          habe es gelöst und deine Erläuterung war sehr hilfreich!

          Kommentar

          Lädt...
          X