From d4b0a9ea2a16472bc1869d0f00a4f9ac12689583 Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Tue, 24 Feb 2015 10:21:09 +0100 Subject: [PATCH] Solving parsing problems with the markdown library and html elements. --- include/bb2diaspora.php | 23 ++++++++++++++++++++++- library/markdown.php | 2 +- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/include/bb2diaspora.php b/include/bb2diaspora.php index a694c8ec85..e818acb83e 100644 --- a/include/bb2diaspora.php +++ b/include/bb2diaspora.php @@ -18,7 +18,22 @@ function diaspora2bb($s) { $s = html_entity_decode($s,ENT_COMPAT,'UTF-8'); // Simply remove cr. - $s = str_replace("\r","",$s); + //$s = str_replace("\r","",$s); +/* + // The parser has problems with unbalanced HTML elements + $doc = new DOMDocument(); + $doc->preserveWhiteSpace = false; + $s = mb_convert_encoding($s, 'HTML-ENTITIES', "UTF-8"); + $doctype = ''; + $encoding = ''; + @$doc->loadHTML($encoding.$doctype."".$s.""); + $doc->encoding = 'UTF-8'; + $s = $doc->saveHTML(); + $s = str_replace(array("", "", $doctype, $encoding), array("", "", "", ""), $s); +*/ + + // The parser has problems with unbalanced html elements + $s = str_replace(array("
", "

", "

", '

'),array("
", "
", "
", "
"),$s); // Escaping the hash tags $s = preg_replace('/\#([^\s\#])/','#$1',$s); @@ -53,6 +68,8 @@ function diaspora2bb($s) { function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) { + $a = get_app(); + $OriginalText = $Text; // Since Diaspora is creating a summary for links, this function removes them before posting @@ -92,9 +109,13 @@ function bb2diaspora($Text,$preserve_nl = false, $fordiaspora = true) { // Maybe we should make this newline at every time before a quote. $Text = str_replace(array("

"), array("
"), $Text); + $stamp1 = microtime(true); + // Now convert HTML to Markdown $Text = new HTML_To_Markdown($Text); + $a->save_timestamp($stamp1, "parser"); + // Libertree has a problem with escaped hashtags - Diaspora doesn't seem to. if (!$fordiaspora) $Text = str_replace(array('\#'), array('#'), $Text); diff --git a/library/markdown.php b/library/markdown.php index 4d36c1d14f..a8152c2ab6 100644 --- a/library/markdown.php +++ b/library/markdown.php @@ -17,7 +17,7 @@ function Markdown($text) { # Read file and pass content through the Markdown parser $html = MarkdownExtra::defaultTransform($text); - $a->save_timestamp($stamp1, "rendering"); + $a->save_timestamp($stamp1, "parser"); return $html; } -- 2.39.5