diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php
index 38171d295..73503cece 100644
--- a/src/Content/Text/BBCode.php
+++ b/src/Content/Text/BBCode.php
@@ -50,7 +50,7 @@ use Friendica\Util\XML;
class BBCode
{
// Update this value to the current date whenever changes are made to BBCode::convert
- const VERSION = '2020-12-03';
+ const VERSION = '2020-12-06';
const INTERNAL = 0;
const API = 2;
@@ -1378,6 +1378,9 @@ class BBCode
} while ($oldtext != $text);
}
+ // Add HTML new lines
+ $text = str_replace("\n", '
', $text);
+
/// @todo Have a closer look at the different html modes
// Handle attached links or videos
if ($simple_html == self::ACTIVITYPUB) {
@@ -1848,18 +1851,16 @@ class BBCode
return $text;
}); // Escaped noparse, nobb, pre
- // Remove escaping tags
- $text = preg_replace("/\[noparse\](.*?)\[\/noparse\]/ism", '\1', $text);
- $text = preg_replace("/\[nobb\](.*?)\[\/nobb\]/ism", '\1', $text);
+ // Remove escaping tags and replace new lines that remain
+ $text = preg_replace_callback('/\[(noparse|nobb)](.*?)\[\/\1]/ism', function ($match) {
+ return str_replace("\n", "
", $match[2]);
+ }, $text);
// Additionally, [pre] tags preserve spaces
$text = preg_replace_callback("/\[pre\](.*?)\[\/pre\]/ism", function ($match) {
- return str_replace(' ', ' ', htmlentities($match[1], ENT_NOQUOTES,'UTF-8'));
+ return str_replace([' ', "\n"], [' ', "
"], htmlentities($match[1], ENT_NOQUOTES,'UTF-8'));
}, $text);
- // Add HTML new lines
- $text = str_replace("\n", '
', $text);
-
return $text;
}); // Escaped code