BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Regex: URL Filtern » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Regex: URL Filtern
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Regex: URL Filtern       Zum Anfang der Seite springen

Moin,

Ich versuche gerade mittels regex eine URL zu filtern, leider
findet man im Internet nicht immer das richtige... Augen rollen

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

phlox81.de | codenode.de
11.07.2005 13:47 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Themenstarter Thema begonnen von phlox81
      Zum Anfang der Seite springen

(//[^/]+)/([\\d\\w\\.\\?\\=\\&/]*)
^so läuft es nun einiger maßen, aber geht das nicht auch besser ?

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
11.07.2005 14:13 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Black Star Black Star ist männlich
Der Pate [Admin]


images/avatars/avatar-2158.jpg

Dabei seit: 11.12.2001
Beiträge: 2.282
Herkunft: /dev/stderr

      Zum Anfang der Seite springen

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.

code:
1:
2:
3:
$ perl -e '$url="http://www.mysite.de/haha/mysite.php?s=index"; $url=~/(http:\/\/)?([^\/)]*)/; print "$2\n"; $url=~/(.*\/)(.*)/; print "$2\n";'
www.mysite.de
mysite.php?s=index


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.

__________________
vescere bracis meis

11.07.2005 16:29 Black Star ist offline E-Mail an Black Star senden Homepage von Black Star Beiträge von Black Star suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Themenstarter Thema begonnen von phlox81
      Zum Anfang der Seite springen

hm, werd mal schauen was java davon hält großes Grinsen

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
12.07.2005 07:28 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Themenstarter Thema begonnen von phlox81
      Zum Anfang der Seite springen

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

phlox81.de | codenode.de
21.07.2005 12:28 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
LX LX ist männlich
El Comandante en Jefe


images/avatars/avatar-2290.gif

Dabei seit: 25.11.2001
Beiträge: 5.372
Herkunft: Berliner Bronx

Achtung       Zum Anfang der Seite springen

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).

__________________
JS-Games.de - Misled Scripting Skills Gone Mad | Meine Filmkritiken | Urban Photography
Kommt mal in den IRC-Channel: irc.eu.freenode.net | Port 6667 | #blackboard

"Ever tried. Ever failed. No matter.
Try again. Fail again. Fail better."
- Samuel Beckett

21.07.2005 13:41 LX ist offline E-Mail an LX senden Homepage von LX Beiträge von LX suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Regex: URL Filtern

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH