Problem mit preg_replace und Links

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit preg_replace und Links

    Hallo Leutz,

    ich habe ein Problemchen mit einem regulären Ausdruck, mit dem ich Links in einem Text anklickbar mache. Dazu nutze ich folgende Funktion:

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

    Das funktioniert auch super soweit. Das einzigste Problem ist, wenn ich einen Link im Text habe, der in runde Klammern eingeschlossen ist oder dem am Ende ein Punkt oder ein Komma (also irgend ein Zeichen außer einer Leerstelle) folgt. In diesem Fall wird das Zeichen hinter der URL leider mit als Link übernommen:

    Habe ich also folgenden Text:

    Code:
    Blindtext Blindtext (siehe http://www.xyz.de). Blindtext Blindtext Blindtext Blindtext Blindtext Blindtext
    Wird durch die Funktion leider dieser Link eingefügt:

    Code:

    Code:
    <a href="http://www.xyz.de).">http://www.xyz.de).</a>
    Klickt man den Link dann an, funktioniert dieser natürlich nicht. Also müsste ich den Ausdruck so umändern, dass Punkt, Komma, Klammern, Eckige Klammern u.s.w. am Ende nicht für den Link übernommen werden.

    Ich hab schon rumprobiert, da ich aber in dem Thema auch nicht so fit bin, komme aber nicht auf die Lösung

    Jemand eine Idee?

    Grüße und danke schonmal für die Hilfe.
    Oneside
    Luxus Magazin
    Luxus Shops

  • #2
    Die zweite Gruppe sollte nur Zeichen enthalten, die man in einer URL verwenden kann und die dritte Gruppe brauchst du überhaupt nicht, zumindest nicht als Gruppe (= geklammerter Sub-Ausdruck).

    Kommentar

    Lädt...
    X