diff options
author | fabrixxm <fabrix.xm@gmail.com> | 2011-02-12 18:31:13 +0100 |
---|---|---|
committer | fabrixxm <fabrix.xm@gmail.com> | 2011-02-12 18:31:13 +0100 |
commit | 53dff2204bf2cbe46b6cbdb7174fa0cf1a7162b1 (patch) | |
tree | eee6bc94d474e327a233c7053beb46d33036a65d /include/html2bbcode.php | |
parent | 26dfb73f48d4fcd4671d136e53f52bb81995ea34 (diff) | |
parent | 89cbd17c721dae57b18686fd7f3e5f8c74a279d9 (diff) | |
download | volse-hubzilla-53dff2204bf2cbe46b6cbdb7174fa0cf1a7162b1.tar.gz volse-hubzilla-53dff2204bf2cbe46b6cbdb7174fa0cf1a7162b1.tar.bz2 volse-hubzilla-53dff2204bf2cbe46b6cbdb7174fa0cf1a7162b1.zip |
Merge branch 'friendika-master'
Diffstat (limited to 'include/html2bbcode.php')
-rw-r--r-- | include/html2bbcode.php | 53 |
1 files changed, 51 insertions, 2 deletions
diff --git a/include/html2bbcode.php b/include/html2bbcode.php index 6af8df824..734282d95 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\>(.*?)\<\/pre\>/is', '/\<p(.*?)\>/is', '/\<\/p\>/is', @@ -26,6 +31,7 @@ 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', @@ -35,7 +41,6 @@ function html2bbcode($s) { // Replace with $bbtags = array( - '', '[code]$1[/code]', '', "\n", @@ -51,6 +56,7 @@ 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]', @@ -64,5 +70,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; } |