aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorFriendika <info@friendika.com>2011-02-09 17:51:05 -0800
committerFriendika <info@friendika.com>2011-02-09 17:51:05 -0800
commit05c52ae81da6ce3c3b57672c2560072e1ce2705c (patch)
treead77e92cd78887668eb300d6311c796ac14e6067 /include
parent971b16ea4aadf8a24427907619e482e4cafe6faa (diff)
downloadvolse-hubzilla-05c52ae81da6ce3c3b57672c2560072e1ce2705c.tar.gz
volse-hubzilla-05c52ae81da6ce3c3b57672c2560072e1ce2705c.tar.bz2
volse-hubzilla-05c52ae81da6ce3c3b57672c2560072e1ce2705c.zip
preserve newlines inside <pre> tags when importing feeds
Diffstat (limited to 'include')
-rw-r--r--include/html2bbcode.php51
1 files changed, 49 insertions, 2 deletions
diff --git a/include/html2bbcode.php b/include/html2bbcode.php
index bde761f2f..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',
@@ -36,7 +41,6 @@ function html2bbcode($s) {
// Replace with
$bbtags = array(
- '',
'[code]$1[/code]',
'',
"\n",
@@ -66,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;
}