diff --git a/html/inc/text_transform.inc b/html/inc/text_transform.inc
index 36e923adbb..0ef5aede7f 100644
--- a/html/inc/text_transform.inc
+++ b/html/inc/text_transform.inc
@@ -110,6 +110,7 @@ function bb2html($text) {
$httpsregex = "(?:\"?)https\:\/\/([^\[\"<\ ]+)(?:\"?)";
// List of allowable tags
$bbtags = array (
+ "@\[code\](.*?)\[/code\]@eis",
"@\[b\](.*?)\[/b\]@is",
"@\[i\](.*?)\[/i\]@is",
"@\[u\](.*?)\[/u\]@is",
@@ -128,7 +129,6 @@ function bb2html($text) {
"@\[color=(?:\"?)(.{3,8})(?:\"?)\](.*?)\[/color\]@is",
"@((?:
|
|))@is",
"@\[size=([1-9]|[0-2][0-9])\](.*?)\[/size\]@is",
- "@\[code\](.*?)\[/code\]@is",
"@\[mailto\](.*?)\[/mailto\]@is",
"@\[email\](.*?)\[/email\]@is",
"@\[trac\](?:\#|ticket:)(\d+)\[/trac\]@is",
@@ -141,6 +141,7 @@ function bb2html($text) {
// What the above tags are turned in to
$htmltags = array (
+ "''.stop_recursion('\\1').'
'",
"\\1",
"\\1",
"\\1",
@@ -159,7 +160,6 @@ function bb2html($text) {
"\\2",
"\\1\\2\n\\3",
"\\2",
- "\\1
",
"\\1",
"\\1",
"#\\1",
@@ -179,8 +179,16 @@ function bb2html($text) {
return $text;
}
-// Make links open in new windows.
+/**
+ * Stops recursion of BBCode by escaping any [ in the given text
+ * @param $text The text to stop recursion in
+ * @return A text that no longer can cause recursion
+ **/
+function stop_recursion($text){
+ return str_replace("[", "[", $text);
+}
+// Make links open in new windows.
function externalize_links($text) {
// TODO: Convert this to PCRE
$i=0;$linkpos=true;