X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fhtml2bbcode.php;h=8025c336bc9ca5b3aa7cf7ce6044af7bd90108e7;hb=0f4a42f550b5bc863cec7c7a3fca26a028599dcc;hp=6af8df824e76bbf35552e881b81aaa2c783364c5;hpb=97bb80c00f4106d63d730f6bcaebf9e4aa247c01;p=friendica.git diff --git a/include/html2bbcode.php b/include/html2bbcode.php index 6af8df824e..8025c336bc 100644 --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -7,10 +7,15 @@ function html2bbcode($s) { + + // only keep newlines from source that are within pre tags + + $s = stripnl_exceptinpre($s); + + // Tags to Find $htmltags = array( - '/\n/is', '/\(.*?)\<\/pre\>/is', '/\/is', '/\<\/p\>/is', @@ -19,6 +24,10 @@ function html2bbcode($s) { '/\(.*?)\<\/u\>/is', '/\(.*?)\<\/ul\>/is', '/\(.*?)\<\/li\>/is', + '/\/is', + '/\/is', + '/\/is', + '/\/is', '/\/is', '/\(.*?)\<\/div\>/is', '/\/is', @@ -26,16 +35,17 @@ function html2bbcode($s) { '/\(.*?)\<\/a\>/is', '/\(.*?)\<\/code\>/is', '/\(.*?)\<\/span\>/is', + '/\(.*?)\<\/span\>/is', '/\(.*?)\<\/blockquote\>/is', '/\(.*?)\<\/video\>/is', '/\(.*?)\<\/audio\>/is', + '/\(.*?)\<\/iframe\>/is', ); // Replace with $bbtags = array( - '', '[code]$1[/code]', '', "\n", @@ -44,6 +54,10 @@ function html2bbcode($s) { '[u]$1[/u]', '[list]$1[/list]', '[*]$1', + '[img=$2x$4]$6[/img]', + '[img=$4x$2]$6[/img]', + '[img=$4x$6]$2[/img]', + '[img=$6x$4]$2[/img]', '[img]$2[/img]', '$2', "\n", @@ -51,9 +65,11 @@ function html2bbcode($s) { '[url=$2]$4[/url]', '[code]$1[/code]', '[color="$1"]$2[/color]', + '[size=$1]$2[/size]', '[quote]$1[/quote]', '[video]$1[/video]', '[audio]$1[/audio]', + '[iframe]$1[/iframe]', ); // Replace $htmltags in $text with $bbtags @@ -64,5 +80,48 @@ function html2bbcode($s) { // Strip all other HTML tags $text = strip_tags($text); return $text; + +} + +function stripnl_exceptinpre($string) +{ + // First, check for
 tag
+    if(strpos($string, '
') === false)
+    {
+        return str_replace("\n","", $string);
+    }
+
+    // If there is a 
, we have to split by line
+    // and manually replace the linebreaks
+
+    $strArr=explode("\n", $string);
+
+    $output="";
+    $preFound=false;
+
+    // Loop over each line
+    foreach($strArr as $line)
+    {    // See if the line has a 
. If it does, set $preFound to true
+        if(strpos($line, "
") !== false)
+        {
+            $preFound=true;
+        }
+        elseif(strpos($line, "
") !== false) + { + $preFound=false; + } + + // If we are in a pre tag, add line and also add \n, else add the line without \n + if($preFound) + { + $output .= $line . "\n"; + } + else + { + $output .= $line ; + } + } + + return $output; }