Zum Inhalt springen

[PHP] - Problem mit preg_replace und Links


Empfohlene Beiträge

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:


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;
}
[/PHP]

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 [/code]
Wird durch die Funktion leider dieser Link eingefügt:
[CODE]<a href="http://www.xyz.de).">http://www.xyz.de).</a>[/code]

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 übernommen werden.

Ich hab schon rumprobiert, komme aber nicht auf die Lösung :beagolisc

Jemand eine Idee?

Grüße und danke schonmal für die Hilfe.

Oneside

Bearbeitet von oneside
Link zu diesem Kommentar
Auf anderen Seiten teilen

da musst du halt die Klammer ) bzw den punkt als ende signal für den link einfügen, wenn man das dann sehr flexibel haben will, dann kann man das ganze so machen, dass ein link auch mit einem . und einer ) ( [ ] usw endet, sofern dahinter kein normaler buchstabe, keine Zahl und kein Unterstrich , also ein \W, folgt.


$pattern = '#(^|[^\"=]{1})(http://|ftp://|mailto:|news:)([^\s<>]+)([\s\n<>]|[\[\]\(\)\.\!\?]\W|$)#sm';
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...