X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fhtml2bbcode.php;h=8025c336bc9ca5b3aa7cf7ce6044af7bd90108e7;hb=64d0616762efcff413a335f2fdde4d8219d44895;hp=a2e53a81b8682f8e9ebc2693e9d013d3e5b1e804;hpb=206eee02294cc75c06479f599c03e5a95ea5ee70;p=friendica.git diff --git a/include/html2bbcode.php b/include/html2bbcode.php old mode 100644 new mode 100755 index a2e53a81b8..8025c336bc --- a/include/html2bbcode.php +++ b/include/html2bbcode.php @@ -1,50 +1,127 @@ (.*?)\<\/b\>/is', - '/\(.*?)\<\/i\>/is', - '/\(.*?)\<\/u\>/is', - '/\(.*?)\<\/ul\>/is', - '/\(.*?)\<\/li\>/is', - '/\/is', - '/\(.*?)\<\/div\>/is', - '/\/is', - '/\(.*?)\<\/strong\>/is', - '/\(.*?)\<\/a\>/is', - '/\(.*?)\<\/code\>/is', - '/\(.*?)\<\/span\>/is', - '/\(.*?)\<\/blockquote\>/is', - - ); - -// Replace with -$bbtags = array( - '', - '[b]$1[/b]', - '[i]$1[/i]', - '[u]$1[/u]', - '[list]$1[/list]', - '[*]$1', - '[img]$2[/img]', - '$2', - "\n", - '[b]$1[/b]', - '[url=$1]$3[/url]', - '[code]$1[/code]', - '[color="$1"]$2[/color]', - '[quote]$1[/quote]', - ); - -// Replace $htmltags in $text with $bbtags -$text = preg_replace ($htmltags, $bbtags, $s); - -// Strip all other HTML tags -$text = strip_tags($text); -return $text; -} \ No newline at end of file + // only keep newlines from source that are within pre tags + + $s = stripnl_exceptinpre($s); + + + // Tags to Find + + $htmltags = array( + '/\(.*?)\<\/pre\>/is', + '/\/is', + '/\<\/p\>/is', + '/\(.*?)\<\/b\>/is', + '/\(.*?)\<\/i\>/is', + '/\(.*?)\<\/u\>/is', + '/\(.*?)\<\/ul\>/is', + '/\(.*?)\<\/li\>/is', + '/\/is', + '/\/is', + '/\/is', + '/\/is', + '/\/is', + '/\(.*?)\<\/div\>/is', + '/\/is', + '/\(.*?)\<\/strong\>/is', + '/\(.*?)\<\/a\>/is', + '/\(.*?)\<\/code\>/is', + '/\(.*?)\<\/span\>/is', + '/\(.*?)\<\/span\>/is', + '/\(.*?)\<\/blockquote\>/is', + '/\(.*?)\<\/video\>/is', + '/\(.*?)\<\/audio\>/is', + '/\(.*?)\<\/iframe\>/is', + + ); + + // Replace with + + $bbtags = array( + '[code]$1[/code]', + '', + "\n", + '[b]$1[/b]', + '[i]$1[/i]', + '[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", + '[b]$1[/b]', + '[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 + $text = preg_replace ($htmltags, $bbtags, $s); + + call_hooks('html2bbcode', $text); + + // 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; +} +