Christian Kruse: Brauche bitte eine Idee für ein Gästebuch!!!

Beitrag lesen

Hallo Sven,

Im Prinzip ist es so, dass ein regulärer Ausdruck prüft,
ob eine gültige URL angegeben wurde. Um es aber noch
komplexer zu machen: Man kann auch Links auf lokale
Dokumente setzen, z.B. auf die Forums-FAQ: </faq/>.
Der Link wird auch erkannt. Ich hab' nicht nachgeschaut,
wie der Posting-Parser das erkennt, [...]

Im Grunde recht einfach. Zuerst werden die Links eingesammelt:

push @links,[$1, $2] while $txt =~ /[(link):\s*([^]\s]+)\s*]/ig;

Danach wird der Array per grep() auf Gueltigkeit geprueft:

@links = grep {
    is_URL($_->[1] => qw(http ftp news nntp telnet gopher mailto))

Hier wird geprueft, ob es eine gueltige (absolute) URI aus
einer der angegebenen Protokolle ist.

or is_URL(($_->[1] =~ /[1][Ii][Ee][Ww]-[Ss][Oo][Uu][Rr][Cc][Ee]:(.+)/)[0] || '' => 'http')

Hier wird geprueft, ob die URI vielleicht ein
'view-source'-Link ist, Protokoll *muss* hierbei HTTP sein.

or ($_->[1] =~ m<^(?:.?.?/(?!/)|?)> and is_URL(rel_uri($_ -> [1],$base) => 'http'))

Hier wird geprueft, obs eine relative URI ist. Dazu wird
geschaut, ob entweder ein relativer oder ein absoluter Pfad
angegeben wurde, oder ob ein Link auf das aktuelle Script
gegeben ist und nur der Query-String unterschiedlich ist. Ist
das der Fall, wird eine absolute URL (ueber rel_uri) erstellt
und dann die Validitaet der neuen, absoluten URI geprueft.

Der Code stammt ueberigens noch aus dem alten Forum, ist also
aus Andies Feder.

Alles, was mit Slash / beginnt, ist mit Sicherheit eine
lokale URL für _diesen_ Forumsserver.

Auch alles, was mit . oder .. beginnt.

Gruesse,
 CK


  1. Vv ↩︎