diff --git a/src/Content/Text/BBCode.php b/src/Content/Text/BBCode.php index 38171d2951..73503cece8 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