oneside Geschrieben 9. Mai 2009 Teilen Geschrieben 9. Mai 2009 (bearbeitet) 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 9. Mai 2009 von oneside Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bmg4ever2 Geschrieben 10. Mai 2009 Teilen Geschrieben 10. Mai 2009 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] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oneside Geschrieben 11. Mai 2009 Autor Teilen Geschrieben 11. Mai 2009 Hallo bmg4ever2, danke für deine Antwort Ich habs mal versucht, aber deine Version funktioniert auch nicht, es bleibt das gleiche Problen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
0815FIA Geschrieben 11. Mai 2009 Teilen Geschrieben 11. Mai 2009 naja, bevor man sich 3 stunden den kopf zerbricht über ewig lange regex, würde ich evtl einfach den fertigen linkstring nochmal auf . und ) prüfen am ende... ^^ Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
oneside Geschrieben 11. Mai 2009 Autor Teilen Geschrieben 11. Mai 2009 Das Problem ist, dass ich nich einfach nen Link bzw ne Url habe, sondern einen kompletten Text in dem mehrere Links drinnen sind, sonst hätte ich das so gemacht. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.