preg_replace - tworzenie klikanego URLa z tekstowego

0

Witam.

Chcę u siebie z tekstowych linków (czyli po prostu jeśli w tekście na sztywno pojawi się jakiś URL), tworzyć z tego klikane. W tym celu wziąłem ze stackoverflow.com taki twór:

$sub_message = preg_replace('|([\w\d]*)\s?(https?://([\d\w\.-]+\.[\w\.]{2,6})[^\s\]\[\<\>]*/?)|i', '$1 <a target="_blank" href="$2">$3</a>', $value['description']);

i wydawało mi się, że działa jak trzeba. Wczoraj jednak w jednym z tekstów na mojej stronie pojawiło się coś takiego:

Dokładny przebieg szlaku przedstawia załączona mapka (do pobrania również na naszej stronie http://tpn.pl/nowosci/uwaga-skiturowcy-1).

Powyższy preg_replace stworzył z tego coś takiego:

Dokładny przebieg szlaku przedstawia załączona mapka (do pobrania również na naszej stronie <a href="http://tpn.pl/nowosci/uwaga-skiturowcy-1)." target="_blank">tpn.pl</a>

Jak widać, nawias i kropka zostały wciągnięte w adres URL. Jak dać do zrozumienia tej funkcji, że adres URL może kończyć się znakami z zakresu 0-9, A-Z, a-z lub / (slashem)? Bo to chyba jedyne możliwe zakończenia URLi ?

Pozdrawiam.

0

Nie znam się aż tak dobrze na regexp, ale tutaj masz tester https://regex101.com/
Jak wkleisz sobie np. taki regexp

(?:(https?)://([^\s<]+)|(www\.[^\s<]+?\.[^\s<]+))(?<![\.,:()])

To złapie Ci tylko http://tpn.pl/nowosci/uwaga-skiturowcy-1 (tutaj masz negację tych znaków ![.,:()])
Z prawej strony masz wytłumaczone co jak działa. Polecam również http://www.regxlib.com/Search.aspx?k=url&c=2&m=5&ps=20

1 użytkowników online, w tym zalogowanych: 0, gości: 1