From 32c8791ff8223e04d73e52106eb5a8de2ca871c5 Mon Sep 17 00:00:00 2001 From: Michael Save Date: Sun, 11 Mar 2012 11:29:33 +1100 Subject: [PATCH] URL regex fix --- inc/functions.php | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/inc/functions.php b/inc/functions.php index f1c233cf..fb701037 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -1334,13 +1334,8 @@ function markup_url($matches) { global $markup_urls; - $url = $matches[0]; - $after = ''; - - if(preg_match('/([)\]][.,!;]?|[.,!;][)\]]?)$/', $url, $match)) { - $url = substr($url, 0, 0 - strlen($match[1])); - $after = $match[1]; - } + $url = $matches[1]; + $after = $matches[2]; $markup_urls[] = $url; @@ -1376,7 +1371,13 @@ if($config['markup_urls']) { $markup_urls = Array(); - $body = preg_replace_callback($config['url_regex'], 'markup_url', $body, -1, $num_links); + $body = preg_replace_callback( + '/((?:https?:\/\/|ftp:\/\/|irc:\/\/)[^\s<>()"]*?(?:\([^\s<>()"]*?\)[^\s<>()"]*?)*)((?:\s|<|>|"|\.||\]|!|\?|,|,|")*(?:[\s<>()"]|$))/', + 'markup_url', + $body, + -1, + $num_links); + if($num_links > $config['max_links']) error($config['error']['toomanylinks']); }