- $s = html_entity_decode($s,ENT_COMPAT,'UTF-8');
-
- // Simply remove cr.
- //$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 = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">';
- $encoding = '<?xml encoding="UTF-8">';
- @$doc->loadHTML($encoding.$doctype."<html><body>".$s."</body></html>");
- $doc->encoding = 'UTF-8';
- $s = $doc->saveHTML();
- $s = str_replace(array("<html><body>", "</body></html>", $doctype, $encoding), array("", "", "", ""), $s);
-*/
-
- // The parser has problems with unbalanced html elements
- $s = str_replace(array("<br/>", "</p>", "<p>", '<p dir="ltr">'),array("<br />", "<br />", "<br />", "<br />"),$s);
+ $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8');
+
+ // Handles single newlines
+ $s = str_replace("\r", '<br>', $s);
+
+ $s = str_replace("\n", " \n", $s);
+
+ // Replace lonely stars in lines not starting with it with literal stars
+ $s = preg_replace('/^([^\*]+)\*([^\*]*)$/im', '$1\*$2', $s);
+
+ // The parser cannot handle paragraphs correctly
+ $s = str_replace(array('</p>', '<p>', '<p dir="ltr">'), array('<br>', '<br>', '<br>'), $s);