Newsflash
Erster Artikel
So, ich habe inzwischen dann den ersten richtigen Artikel geschrieben, in der Sektion "Programmierung" Kategorie "C++". Der Artikel vermittelt die Grundlagen zu Pointern. Ein wenig vorkenntnisse in C++ sollte man haben.
 

User Login

Home
URL "auseinanderpfriemeln" via Regex PDF Drucken E-Mail
Geschrieben von Mitja Schmakeit   
Friday, 11. April 2008
Also.. ich hatte vor, eine URL in folgende Teile zu zerlegen:
  1. Protokoll (http, ftp, irc, ...)
  2. Host (www.mitja-schmakeit.de)
  3. Pfad (/pfad/bla)
  4. Dateiname (index.php)
  5. Rest (?foo=1&bar=2)
Mit hilfe dieses Regex (mein erster etwas längerer Regex der Sinn macht..), geht das Auswerten einer URL extrem flott: Unter Perl schreibt dieser Ausdruck sich so:
m/([a-zA-Z]{3,}):\/\/([^\/]+)(?:.(=?[^\?]*\/))*([^\?]*)(?:\?(.*))?/
und unter PHP (preg_match, also auch perl, aber mit doppelten backslashes) so:
"/([a-zA-Z]{3,}):\\/\\/([^\\/]+)(?:.(=?[^\\?]*\\/))*([^\\?]*)(?:\\?(.*))?/"
Ein kleines PHP-Script zeigt die Anwendung:
<?php $url = "http://www.mitja-schmakeit.de/j/content/section/5/28/index.php?tp=1"; $matches = array(); preg_match("/([a-zA-Z]{3,}):\\/\\/([^\\/]+)(?:.(=?[^\\?]*\\/))*([^\\?]*)(?:\\?(.*))?/", $url, $matches); for ($i = 0; $i <= 9; $i++) echo "$i: ".$matches[$i]."\n"; ?>
0: http://www.mitja-schmakeit.de/j/content/section/5/28/index.php?tp=1 1: http 2: www.mitja-schmakeit.de 3: j/content/section/5/28/ 4: index.php 5: tp=1
Blöderweise kann der Regex natürlich nicht erkennen, ob das, was ganz hinten steht nun ein Dateiname ist oder ob der Teil noch zum Pfad gehört, wenn kein Slash dahinter ist.. Also bei http://mitja-schmakeit.de/projects OHNE ein / am Ende, denkt dieser Regex, dass "projects" der Dateiname wäre.. was auch durchaus manchmal der Fall ist. Hinter Pfaden sollte also auf jeden fall immer ein / stehen.. Viel Spaß damit.. verbesserungsvorschläge an mich..
 

Who's Online

Aktuell 3 Gäste online
Invalid XHTML (Valid XHTML destroyed by some components), Valid CSS - Design by ah-68 - Copyright © 2007 - 2012 by Mitja Schmakeit - Hosted by taruner.de