Reguläre Ausdrücke
Ich frage mich ernsthaft, wie ich früher ohne reguläre Ausdrücke leben konnte. Das könnt ich mir beim besten Willen nicht mehr vorstellen!
Anlaß für die Freude: Mein Gästebuch und mein Weblog verlinkt jetzt URLs in Einträgen und Kommentaren automatisch. War an sich auch net schwer: mit einem
/(.*?)((?:https?:\/\/|www.)[^\s">]+)(.*)/
ist da schon viel getan! Wobei ich zugeben muß, daß ich vor ein paar Jahren noch mit Unverständnis auf eine fürs ungeübte Auge verständlicherweise kryptische Zeile Code reagiert hätte ;-) Die php-Umsetzung sieht dann folgendermaßen aus:
preg_match("/(.*?)((?:https?:\/\/|www.)[^\s">]+)(.*)/", $eintrag, $treffer);
Danach hat man dann in $treffer[1]
den Text vor dem ersten Link, in $treffer[2]
den Link selber und in $treffer[3]
den Text danach. Dann muß man ja bloß schauen, daß der Link auch mit „http://“ anfängt und ob's ein interner ist (/^http:\/\/www.nasauber.de/
) und entsprechend verlinken. Dann ab mit Treffer 1 und 2 in die Ausgabe und Treffer 3 wird wiederum nach nem Link durchsucht. Und so weiter :-)
Mit Perl könnt man das natürlich noch schöner machen. Und kürzer: Nach einem
$eintrag =~ !((?:https?://|www.)[^\s">]+)!;
hat man in $`
den Text vor dem Link, in $1
den Link selber und in $'
den Text danach. Aber wenn der Rest der Homepage (leider) in php geschrieben ist, kann man halt nix machen …
Auch meine kürzlich geschriebene Download-Statistik wäre ohne reguläre Ausdrücke aufgeschmissen: denn da wird erstmal geschaut, was grep '$gestern_log.\+GET.\+.gz' /.../...log
so zu bieten hat und per /\"(.+?)\".+\"(.+?)\"$/
werden die relevanten Daten rausgezogen.
Ich weiß nicht, wer den Kram erfunden hat … aber vielen Dank dafür :-)