quotes */ class SimpleMarkdown { /** * Parse markdown text to HTML */ public static function parse($text) { // Convert special characters to HTML entities first $text = htmlspecialchars($text, ENT_QUOTES, 'UTF-8'); // Headers (h1-h6) $text = preg_replace('/^#{1,6}\s+(.+)$/m', '

$1

', $text); // Bold text $text = preg_replace('/\*\*(.+?)\*\*/', '$1', $text); // Italic text $text = preg_replace('/\*(.+?)\*/', '$1', $text); // Inline code $text = preg_replace('/`(.+?)`/', '$1', $text); // Code blocks $text = preg_replace('/```(.+?)```/s', '
$1
', $text); // Links $text = preg_replace('/\[(.+?)\]\((.+?)\)/', '$1', $text); // Blockquotes $text = preg_replace('/^>\s+(.+)$/m', '
$1
', $text); // Unordered lists $text = preg_replace('/^\-\s+(.+)$/m', '
  • $1
  • ', $text); $text = preg_replace('/(
  • .*<\/li>)/s', '', $text); // Line breaks $text = nl2br($text); // Clean up multiple consecutive line breaks $text = preg_replace('/(\s*){3,}/', '

    ', $text); return $text; } /** * Convert HTML back to markdown (simplified) * This is a basic implementation - may not handle all cases perfectly */ public static function toMarkdown($html) { // Basic HTML to markdown conversion $markdown = $html; // Headers $markdown = preg_replace('/(.+?)<\/h[1-6]>/i', '# $1', $markdown); // Bold $markdown = preg_replace('/(.+?)<\/strong>/i', '**$1**', $markdown); // Italic $markdown = preg_replace('/(.+?)<\/em>/i', '*$1*', $markdown); // Code $markdown = preg_replace('/(.+?)<\/code>/i', '`$1`', $markdown); $markdown = preg_replace('/
    (.+?)<\/code><\/pre>/is', "```$1```", $markdown);
            
            // Links
            $markdown = preg_replace('/(.+?)<\/a>/i', '[$2]($1)', $markdown);
            
            // Blockquotes
            $markdown = preg_replace('/
    (.+?)<\/blockquote>/i', '> $1', $markdown); // Lists (simplified) $markdown = preg_replace('/
      (.+?)<\/ul>/is', '$1', $markdown); $markdown = preg_replace('/
    • (.+?)<\/li>/i', '- $1', $markdown); // Line breaks $markdown = preg_replace('//i', "\n", $markdown); // Decode HTML entities $markdown = htmlspecialchars_decode($markdown, ENT_QUOTES); // Clean up $markdown = preg_replace('/\n{3,}/', "\n\n", $markdown); $markdown = trim($markdown); return $markdown; } } ?>