Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
Regex: URL Filtern
Moin,
Ich versuche gerade mittels regex eine URL zu filtern, leider
findet man im Internet nicht immer das richtige...
Mein Wissen um regex ist begrenzt...
Ich will den host und die Request aus einer URL ziehen: http://www.mysite.de/<host
site.php?x=y&z=x < request.
Darum gehts also.
Das ist meine Regex:
(//[^/]+)/([\\d\\w\\.\\?\\=\\&]*)
Funktioniert auch grob, aber bei seiten wie: www.mysite.de/haha/mysite.php?s=index
streikt er, da er dann nur haha als request einließt.
Meine eigentliche Frage ist also eigentlich, wie kann ich
nach dem / bei host es so machen, das er den ganzen angehängten string
als groupt nimmt ?
Devil
__________________ Intelligenz ist eine Illusion des Menschen
Dabei seit: 11.12.2001
Beiträge: 2.282
Herkunft: /dev/stderr
Ja, du kannst den ganzen rest einfach mit (.*) makieren.
Weil der Host vor dem ersten / steht macht ihn das ja schon eindeutig.
Beim Request ist es so, dass alles, was nach dem letzten / kommt der Request ist.
Ich weiss jetzt nicht wie gut PHP mit perl-regexps umgehen kann.
Das funktioniert bei mir und ist so allgemein wie moeglich gehalten, weil du sonst ja einen riesen Haufen Zeichen mit reinnehmen muesstest, die evtl. im Hostnamen oder im Request vorkommen koennten.
Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo
Themenstarter
So, läuft alles wunderbar, tolle sache so ein WAP Crawler...
Nur dummerweise gibts da jetzt ein problem:
Auf einer der Testseiten sehen die links so aus :
<a class="myclass" href="..."> </a>
Meine RegEx sieht so aus:
"<a\\s+href\\s*=\\s*\"?(.*?)[\"|>]"
wobei hier eigentlich nur dieser Teil von belang ist:
"<a\\s+href"
Wie kann ich nun es so anpassen, das er das class="..." dort
ebenfalls erkennt, und überspringt ?
Hm, hm, interessant, mein Crawler bekommt einen normalen wapquellcode,
während der browser html bekommt, interessant, also das Problem hat
sich damit vorerst eigentlich vielleicht erledigt ;)
Jemand ne Idee wies trotzdem gehen würde, falls ich darauf zurück kommen muss ? ;)
Devil
__________________ Intelligenz ist eine Illusion des Menschen
Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx
Zitat:
Original von Devil81
<a\\s+href\\s*=\\s*\"?(.*?)[\"|>]
Wenn die Links wenigstens W3C-konform sind, dann gibt es zwischen den Attributen und deren Werten bzw. dem = keine Whitespaces und alle Werte sind in Quotes. Das würde die RegExp so aussehen lassen:
<a\\s+href=\"(.*)\"\\s+>
wenn du noch das class abfangen willst:
<a\\s+(class=\".*\"\\s+)?href=\"(.*)\"\\s+>
Die URL liegt dann aber wegen der Klammern ein Ergebnis später vor (und ich hoffe ich hab mich jetzt net vertan, ich mag keine RegExps *g).