diff options
author | Mario <mario@mariovavti.com> | 2024-03-24 17:50:27 +0100 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2024-03-24 17:50:27 +0100 |
commit | 3c0d6339bb12bd7fbf65ba7a79078e39737b4387 (patch) | |
tree | 5784ae0922499f689c123d2341ca57b12a382285 /include/bbcode.php | |
parent | a0cfe22501dc9daa7dd8cff86803cf494a1f5ec3 (diff) | |
download | volse-hubzilla-3c0d6339bb12bd7fbf65ba7a79078e39737b4387.tar.gz volse-hubzilla-3c0d6339bb12bd7fbf65ba7a79078e39737b4387.tar.bz2 volse-hubzilla-3c0d6339bb12bd7fbf65ba7a79078e39737b4387.zip |
make sure we preserve linefeeds in the actual content of lists and tables also add tests
Diffstat (limited to 'include/bbcode.php')
-rw-r--r-- | include/bbcode.php | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/include/bbcode.php b/include/bbcode.php index aa1257a56..1ced24ec3 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -1060,8 +1060,8 @@ function bb_fix_lf($match) { // be converted to '<br />' and turn your neatly crafted tables into a whole lot of // empty space. - $new_content = str_replace(["\n\r", "\n", "\r"], '', $match[1]); - return str_replace($match[1], $new_content, $match[0]); + $new_content = preg_replace("/\]\s+\[/",'][', $match[1]); + return str_replace($match[1], trim($new_content, "\r\n"), $match[0]); } function bbtopoll($s) { @@ -1554,6 +1554,20 @@ function bbcode($text, $options = []) { $text = preg_replace_callback("/\[checklist\](.*?)\[\/checklist\]/ism", 'bb_checklist', $text); } + + if (strpos($text,'[/table]') !== false) { + $text = str_replace(["[/table]\r", "[/table]\n"], '[/table]', $text); + + $text = preg_replace_callback("/\[table\](.*?)\[\/table\]/ism",'bb_fix_lf',$text); + $text = preg_replace("/\[table\](.*?)\[\/table\]/sm", '<table>$1</table>', $text); + + $text = preg_replace_callback("/\[table border=1\](.*?)\[\/table\]/ism",'bb_fix_lf',$text); + $text = preg_replace("/\[table border=1\](.*?)\[\/table\]/sm", '<table class="table table-responsive table-bordered" >$1</table>', $text); + + $text = preg_replace_callback("/\[table border=0\](.*?)\[\/table\]/ism",'bb_fix_lf',$text); + $text = preg_replace("/\[table border=0\](.*?)\[\/table\]/sm", '<table class="table table-responsive" >$1</table>', $text); + } + if (strpos($text,'[th]') !== false) { $text = preg_replace("/\[th\](.*?)\[\/th\]/sm", '<th>$1</th>', $text); } @@ -1566,13 +1580,6 @@ function bbcode($text, $options = []) { $text = preg_replace("/\[tr\](.*?)\[\/tr\]/sm", '<tr>$1</tr>', $text); } - if (strpos($text,'[/table]') !== false) { - $text = preg_replace_callback("/\[table\](.*?)\[\/table\]/ism",'bb_fix_lf',$text); - $text = preg_replace("/\[table\](.*?)\[\/table\]/sm", '<table>$1</table>', $text); - $text = preg_replace("/\[table border=1\](.*?)\[\/table\]/sm", '<table class="table table-responsive table-bordered" >$1</table>', $text); - $text = preg_replace("/\[table border=0\](.*?)\[\/table\]/sm", '<table class="table table-responsive" >$1</table>', $text); - } - $text = str_replace('[hr]', '<hr />', $text); // This is actually executed in prepare_body() |