diff --git a/lib/Newsletter/Links/Links.php b/lib/Newsletter/Links/Links.php index f9697ab057..9846eb02a6 100644 --- a/lib/Newsletter/Links/Links.php +++ b/lib/Newsletter/Links/Links.php @@ -80,7 +80,7 @@ class Links { // i.e., (http://google.com) => [(http://google.com)](http://tracked_link) $regex_escaped_extracted_link = preg_quote($extracted_link['link'], '/'); $content = preg_replace( - '/\[(' . $regex_escaped_extracted_link . ')\](\(' . $regex_escaped_extracted_link . '\))/', + '/\[(.*?)\](\(' . $regex_escaped_extracted_link . '\))/', '[$1](' . $tracked_link . ')', $content ); diff --git a/lib/Newsletter/Shortcodes/Shortcodes.php b/lib/Newsletter/Shortcodes/Shortcodes.php index cff19f7c58..e123c14960 100644 --- a/lib/Newsletter/Shortcodes/Shortcodes.php +++ b/lib/Newsletter/Shortcodes/Shortcodes.php @@ -25,8 +25,10 @@ class Shortcodes { function extract($content, $categories = false) { $categories = (is_array($categories)) ? implode('|', $categories) : false; + // match: [category:shortcode] or [category|category|...:shortcode] + // dot not match: [category://shortcode] - avoids matching http/ftp links $regex = sprintf( - '/\[%s:.*?\]/ism', + '/\[%s:(?!\/\/).*?\]/ism', ($categories) ? '(?:' . $categories . ')' : '(?:\w+)' ); preg_match_all($regex, $content, $shortcodes); @@ -94,4 +96,4 @@ class Shortcodes { $shortcodes = array_intersect_key($shortcodes, $processed_shortcodes); return str_replace($shortcodes, $processed_shortcodes, $content); } -} +} \ No newline at end of file