From e8ab3d96bd4340fb262e5d83a2e5988f47bba3b0 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Tue, 12 Apr 2016 05:53:04 -0400 Subject: [PATCH] Fix converting mail addresses with @www. into mailto links (#5197) --- program/lib/Roundcube/rcube_string_replacer.php | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/program/lib/Roundcube/rcube_string_replacer.php b/program/lib/Roundcube/rcube_string_replacer.php index eb281ee..284d585 100644 --- a/program/lib/Roundcube/rcube_string_replacer.php +++ b/program/lib/Roundcube/rcube_string_replacer.php @@ -34,6 +34,7 @@ protected $options = array(); protected $linkrefs = array(); protected $urls = array(); + protected $noword = '[^\w@.#-]'; function __construct($options = array()) @@ -44,10 +45,13 @@ $url1 = '.:;,'; $url2 = 'a-zA-Z0-9%=#$@+?|!&\\/_~\\[\\]\\(\\){}\*\x80-\xFE-'; + // Supported link prefixes + $link_prefix = "([\w]+:\/\/|{$this->noword}[Ww][Ww][Ww]\.|^[Ww][Ww][Ww]\.)"; + $this->options = $options; $this->linkref_index = '/\[([^\]#]+)\](:?\s*##str_replacement_(\d+)##)/'; $this->linkref_pattern = '/\[([^\]#]+)\]/'; - $this->link_pattern = "/([\w]+:\/\/|\W[Ww][Ww][Ww]\.|^[Ww][Ww][Ww]\.)($utf_domain([$url1]*[$url2]+)*)/"; + $this->link_pattern = "/$link_prefix($utf_domain([$url1]*[$url2]+)*)/"; $this->mailto_pattern = "/(" ."[-\w!\#\$%&\'*+~\/^`|{}=]+(?:\.[-\w!\#\$%&\'*+~\/^`|{}=]+)*" // local-part ."@$utf_domain" // domain-part @@ -91,7 +95,7 @@ if (preg_match('!^(http|ftp|file)s?://!i', $scheme)) { $url = $matches[1] . $matches[2]; } - else if (preg_match('/^(\W*)(www\.)$/i', $matches[1], $m)) { + else if (preg_match("/^({$this->noword}*)(www\.)$/i", $matches[1], $m)) { $url = $m[2] . $matches[2]; $url_prefix = 'http://'; $prefix = $m[1]; -- Gitblit v1.9.1