Tom: Links anklickbar machen, aber...

Moin,

ich hätte gerne eine RegEx, die in einem String "http://www.domauin.tld/" durch "<a href="http://www.domain.tld/">http://www.domain.tld/</a>" ersetzt, aber bereits existierende Links nicht zerstört.

Folgendes habe ich schon:

function make_link($string)
 {
  $pattern = '#(^|[^"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|$)#sm';
  $string = preg_replace($pattern,"\1<a href="\2\3">\2\3</a>\4",$string);
  return $string;
 }

Wie kann ich da noch einbauen, dass alles zwischen "<a" und "</a>" ignoriert wird?

Schon mal Danke, Tom

  1. Hi,

    ich hätte gerne eine RegEx, [...] aber bereits existierende Links nicht zerstört.

    eine einzelne RegExp reicht nicht aus. Entwickle einen komplexeren Algorithmus.

    Wie kann ich da noch einbauen, dass alles zwischen "<a" und "</a>" ignoriert wird?

    Hierzu ist ein Kapitel der Perl-Doku interessant, wenn auch für Dein Problem nicht komplett ausreichend: http://www.perldoc.com/perl5.8.0/pod/perlfaq4.html#How-can-I-split-a-[character]-delimited-string-except-when-inside [character]--(Comma-separated-files)

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hi Tom,

    ich hätte gerne eine RegEx, die in einem String "http://www.domauin.tld/" durch "<a href="http://www.domain.tld/">http://www.domain.tld/</a>" ersetzt, aber bereits existierende Links nicht zerstört.

    wirf doch aus deiner Quelle erstmal die <a ..></a> raus. Dann kannst du _alle_ http://... wieder mit dem <a> tag umrahmen.

    Gruss,
      Carsten