aboutsummaryrefslogtreecommitdiffstats
path: root/include/markdown.php
diff options
context:
space:
mode:
Diffstat (limited to 'include/markdown.php')
-rw-r--r--include/markdown.php28
1 files changed, 12 insertions, 16 deletions
diff --git a/include/markdown.php b/include/markdown.php
index b2adcd0d5..d2379e7ed 100644
--- a/include/markdown.php
+++ b/include/markdown.php
@@ -64,6 +64,12 @@ function markdown_to_bb($s, $use_zrl = false, $options = []) {
// Escaping the hash tags
$s = preg_replace('/\#([^\s\#])/','#$1',$s);
+ // Protect mentions from being mangled by the markdown parser
+ $s = preg_replace_callback(
+ '|@\{([^}]+)\}|',
+ fn ($matches) => '@{' . base64_encode($matches[1]) . '}',
+ $s);
+
$s = MarkdownExtra::defaultTransform($s);
@@ -76,26 +82,16 @@ function markdown_to_bb($s, $use_zrl = false, $options = []) {
$s = str_replace("\r","",$s);
}
+ // Restore mentions after markdown conversion
+ $s = preg_replace_callback(
+ '|@\{([^}]+)\}|',
+ fn ($matches) => '@{' . base64_decode($matches[1]) . '}',
+ $s);
+
$s = str_replace('#','#',$s);
$s = html2bbcode($s);
- // $s = bb_code_protect($s);
-
- // Convert everything that looks like a link to a link
- if($use_zrl) {
- if (strpos($s,'[/img]') !== false) {
- $s = preg_replace_callback("/\[img\](.*?)\[\/img\]/ism", 'use_zrl_cb_img', $s);
- $s = preg_replace_callback("/\[img\=([0-9]*)x([0-9]*)\](.*?)\[\/img\]/ism", 'use_zrl_cb_img_x', $s);
- }
- $s = preg_replace_callback("/([^\]\=\{\/]|^)(https?\:\/\/)([a-zA-Z0-9\pL\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\@\(\)]+)([\,\.\:\;]\s|$)/ismu", 'use_zrl_cb_link',$s);
- }
- else {
- $s = preg_replace("/([^\]\=\{\/]|^)(https?\:\/\/)([a-zA-Z0-9\pL\:\/\-\?\&\;\.\=\_\~\#\%\$\!\+\,\@\(\)]+)([\,\.\:\;]\s|$)/ismu", '$1[url=$2$3]$2$3[/url]$4',$s);
- }
-
- // $s = bb_code_unprotect($s);
-
// remove duplicate adjacent code tags
$s = preg_replace("/(\[code\])+(.*?)(\[\/code\])+/ism","[code]$2[/code]", $s);