]> git.mxchange.org Git - friendica.git/blobdiff - include/html2bbcode.php
item source
[friendica.git] / include / html2bbcode.php
index 6af8df824e76bbf35552e881b81aaa2c783364c5..d4e8cce6661cf84ebba4bac9ea9c819dba62c292 100644 (file)
@@ -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\>(.*?)\<\/pre\>/is',
                '/\<p(.*?)\>/is',
                '/\<\/p\>/is',
@@ -26,16 +31,17 @@ function html2bbcode($s) {
                '/\<a (.*?)href=\"(.*?)\"(.*?)\>(.*?)\<\/a\>/is',
                '/\<code\>(.*?)\<\/code\>/is',
                '/\<span style=\"color:(.*?)\"\>(.*?)\<\/span\>/is',
+               '/\<span style=\"font-size:(.*?)\"\>(.*?)\<\/span\>/is',
                '/\<blockquote\>(.*?)\<\/blockquote\>/is',
                '/\<video(.*?) src=\"(.*?)\" (.*?)\>(.*?)\<\/video\>/is',
                '/\<audio(.*?) src=\"(.*?)\" (.*?)\>(.*?)\<\/audio\>/is',
+               '/\<iframe(.*?) src=\"(.*?)\" (.*?)\>(.*?)\<\/iframe\>/is',
 
        );
 
        // Replace with
 
        $bbtags = array(
-               '',
                '[code]$1[/code]',
                '',
                "\n",
@@ -51,9 +57,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 +72,48 @@ function html2bbcode($s) {
        // Strip all other HTML tags
        $text = strip_tags($text);
        return $text;
+
+}
+
+function stripnl_exceptinpre($string)
+{
+    // First, check for <pre> tag
+    if(strpos($string, '<pre>') === false)
+    {
+        return str_replace("\n","", $string);
+    }
+
+    // If there is a <pre>, 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 <pre>. If it does, set $preFound to true
+        if(strpos($line, "<pre>") !== false)
+        {
+            $preFound=true;
+        }
+        elseif(strpos($line, "</pre>") !== 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;
 }