Preg match all für Links

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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" >#

    Comment


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

      Comment


      • #4
        Originally posted by Peh4pe View Post
        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 ...

        Originally posted by Peh4pe View Post
        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); 
        Last edited by fireweasel; 11-01-2015, 20:46. Reason: typo
        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

        Comment


        • #5
          Danke fireweasel,

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

          Comment

          Working...
          X