PHP and Javascript implementations of a simple markdown parser
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

playgroundapi.php 1.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  3. http_response_code(405); // method not allowed
  4. exit();
  5. }
  6. $readerNames = $_POST['readers'];
  7. $markdown = $_POST['markdown'];
  8. $permittedReaders = [
  9. 'MDUnderlinedHeadingReader' => true,
  10. 'MDHashHeadingReader' => true,
  11. 'MDSubtextReader' => true,
  12. 'MDBlockQuoteReader' => true,
  13. 'MDUnorderedListReader' => true,
  14. 'MDOrderedListReader' => true,
  15. 'MDFencedCodeBlockReader' => true,
  16. 'MDIndentedCodeBlockReader' => true,
  17. 'MDHorizontalRuleReader' => true,
  18. 'MDTableReader' => true,
  19. 'MDDefinitionListReader' => true,
  20. 'MDFootnoteReader' => true,
  21. 'MDAbbreviationReader' => true,
  22. 'MDParagraphReader' => true,
  23. 'MDEmphasisReader' => true,
  24. 'MDStrongReader' => true,
  25. 'MDStrikethroughReader' => true,
  26. 'MDUnderlineReader' => true,
  27. 'MDHighlightReader' => true,
  28. 'MDCodeSpanReader' => true,
  29. 'MDSubscriptReader' => true,
  30. 'MDSuperscriptReader' => true,
  31. 'MDLinkReader' => true,
  32. 'MDReferencedLinkReader' => true,
  33. 'MDImageReader' => true,
  34. 'MDReferencedImageReader' => true,
  35. 'MDLineBreakReader' => true,
  36. 'MDHTMLTagReader' => true,
  37. 'MDModifierReader' => true,
  38. ];
  39. include 'php/markdown.php';
  40. $readers = [];
  41. foreach ($readerNames as $readerName) {
  42. if ($permittedReaders[$readerName] ?? false) {
  43. $ref = new ReflectionClass($readerName);
  44. $reader = $ref->newInstanceArgs([]);
  45. array_push($readers, $reader);
  46. }
  47. }
  48. $parser = new Markdown($readers);
  49. $html = $parser->toHTML($markdown);
  50. header('Content-Type: text/html');
  51. print($html);
  52. ?>