- # normaler Link
- $posting =~ s{\[link:\s*
- ((?:ftp:// # hier beginnt $1
- | https?://
- | about:
- | view-source:
- | gopher://
- | mailto:
- | news:
- | nntp://
- | telnet://
- | wais://
- | prospero://
- | \.\.?/ # relativ auf dem server
- | / # absolut auf dem server
- | (?:[a-zA-Z.\d]+)?\?? # im forum
- ) [^\s<'()\[\]]+ # auf jeden Fall kein \s und kein ] etc.
- ) # hier ist $1 zuende
- \s*(?:\]|(\s|&(?!amp;)|\(|\)|<br>)) # der Begrenzer (\s, ] oder Zeilenende)
- }
- {<a href="$1">$1</a>$2}gix; # und der Link
-
- # javascript-links extra
- my $klammer1='\((?:[^)])*\)';
- my $klammer2="\\((?:$klammer1|(?:[^)])*)\\)";
- my $klammer3="\\((?:$klammer2|(?:[^)])*)\\)";
- my $klammer4="\\((?:$klammer3|(?:[^)])*)\\)";
-
- $posting =~ s{\[link:\s*
- (javascript: # hier beginnt $1
- (?:
- $klammer4 # Klammern bis Verschachtelungstiefe 4 (sollte reichen?)
- | '[^\'\\]*(?:\\.[^\'\\]*)*' # mit ' quotierter String, J.F. sei gedankt
- # im String sind Escapes zugelassen (also auch \')
- # damit werden (korrekt gesetzte) Javascript-Links moeglich
- | [^\s<()'\]]+)+ # auf jeden Fall kein \s und kein ] (ausser im String)
- ) # hier ist $1 zuende
- \s*(?:\s|\]|(\(|\)|&(?!amp;)|<br>)) # der Begrenzer (\s, ] oder Zeilenende)
- }
- {<a href="$1">$1</a>$2}gix; # und der Link
-
- # images
- $posting =~ s{\[image:\s*
- ((?:https?://
- | \.\.?/ # relativ auf dem server
- | / # absolut auf dem server
- | (?:[a-zA-Z.\d]+)?\?? # im forum
- ) [^\s<'()\[\]]+ # auf jeden Fall kein \s und kein ] etc.
- ) # hier ist $1 zuende
- \s*(?:\]|(\s|\(|\)|&(?!amp;)|<br>)) # der Begrenzer (\s, ] oder Zeilenende)
- }
- {<img src="$1" border=0 alt="">$2}gix; # und das Bild
-
- # iframe
- $posting =~ s{\[iframe:\s*
- ((?:ftp://
- | https?://
- | about:
- | view-source:
- | gopher://
- | mailto:
- | news:
- | nntp://
- | telnet://
- | wais://
- | prospero://
- | \.\.?/ # relativ auf dem server
- | / # absolut auf dem server
- | [a-zA-Z\d]+(?:\.html?|/) # im forum (koennen eh nur threads oder verweise
- # auf tiefere verzeichnisse sein)
- )[^\s<'()\]]+ # auf jeden Fall kein \s und kein ] etc. (s.o.)
- ) # hier ist $1 zuende
- \s*(?:\]|(\s|\(|\)|&(?!amp;)|<br>)) # der Begrenzer (\s, ] oder Zeilenende)
- }
- {<iframe src="$1" width="90%" height="90%"><a href="$1">$1</a></iframe>$2}gix;