+ // Extracting multi-line code blocks before the whitespace processing/code highlighter in bbcode()
+ $codeblocks = [];
+ $Text = preg_replace_callback('#\[code(?:=([^\]]*))?\](?=\n)(.*?)\[\/code\]#is',
+ function ($matches) use (&$codeblocks) {
+ $return = '#codeblock-' . count($codeblocks) . '#';
+
+ $prefix = '````' . $matches[1] . PHP_EOL;
+ $codeblocks[] = $prefix . trim($matches[2]) . PHP_EOL . '````';
+ return $return;
+ }
+ , $Text);
+