Browse Source

Added md support

master
Romain de Laage 2 years ago
parent
commit
31ada4dbff
Signed by: rdelaage
GPG Key ID: 18BC11F1027B2AD4
  1. 2
      config/main.php
  2. 145
      lib/md.php
  3. 3
      views/article.php

2
config/main.php

@ -5,5 +5,5 @@ $config = array(
'dbHost' => 'localhost',
'dbUser' => 'usr',
'dbPasswd' => 'JFZZxF+^}U:SZ<7EE=n!_(gQs',
'dbName' => 'blog'
'dbName' => 'blog_TEST'
);

145
lib/md.php

@ -0,0 +1,145 @@
<?php
function split($text){
$text = str_replace("\r\n", "\n", $text);
$text = str_replace(" ", "\t", $text);
$text = trim($text, "\n");
return explode("\n", $text);
}
function convert($text){
$converted = "";
for($i=0;$i<count($text);$i++){
$transcripted = false;
$text[$i] = trim($text[$i], " ");
if($i+1<count($text)){
if(!$transcripted && preg_match("#^=(=)+$#", $text[$i+1])){
$converted .= "<h1>".$text[$i]."</h1>";
$i++;
$transcripted = true;
}
if(!$transcripted && preg_match("#^-(-)+$#", $text[$i+1])){
$converted .= "<h2>".$text[$i]."</h2>";
$i++;
$transcripted = true;
}
}
if(!$transcripted){
if(preg_match("#^\# (.)+$#", $text[$i])){
$converted .= preg_replace("#^\# (.+)$#", "<h1>$1</h1>", $text[$i]);
$transcripted = true;
}
if(preg_match("#^\#\# (.)+$#", $text[$i])){
$converted .= preg_replace("#^\#\# (.+)$#", "<h2>$1</h2>", $text[$i]);
$transcripted = true;
}
if(preg_match("#^\#\#\# (.)+$#", $text[$i])){
$converted .= preg_replace("#^\#\#\# (.+)$#", "<h3>$1</h3>", $text[$i]);
$transcripted = true;
}
if(preg_match("#^\#\#\#\# (.)+$#", $text[$i])){
$converted .= preg_replace("#^\#\#\#\# (.+)$#", "<h4>$1</h4>", $text[$i]);
$transcripted = true;
}
if(preg_match("#^\#\#\#\#\# (.)+$#", $text[$i])){
$converted .= preg_replace("#^\#\#\#\#\# (.+)$#", "<h5>$1</h5>", $text[$i]);
$transcripted = true;
}
if(preg_match("#^\#\#\#\#\#\# (.)+$#", $text[$i])){
$converted .= preg_replace("#^\#\#\#\#\#\# (.+)$#", "<h6>$1</h6>", $text[$i]);
$transcripted = true;
}
if(preg_match("#^---+$#", $text[$i])){
$converted .= preg_replace("#^---+$#", "<hr />", $text[$i]);
$transcripted = true;
}
}
if(!$transcripted){
if(preg_match("#^[+*-] (.*)$#", $text[$i])){
$converted .= "<ul>";
while($i < count($text) && preg_match("#^[+*-] (.*)$#", $text[$i])){
$li = array(preg_replace("#^[+*-] (.*)$#", "$1", $text[$i]));
$i++;
while($i < count($text) && preg_match("#^\t+(.*)$#", $text[$i])){
$li[] = preg_replace("#^\t+(.*)$#", "$1", $text[$i]);
$i++;
}
$i--;
$converted .= "<li>".convert($li)."</li>";
$i++;
}
$i--;
$converted .= "</ul>";
$transcripted = true;
}
if(preg_match("#^1\. (.*)$#", $text[$i])){
$converted .= "<ol>";
while($i < count($text) && preg_match("#^[0-9]+\. (.*)$#", $text[$i])){
$li = array(preg_replace("#^[0-9]+\. (.*)$#", "$1", $text[$i]));
$i++;
while($i < count($text) && preg_match("#^\t+(.*)$#", $text[$i])){
$li[] = preg_replace("#^\t+(.*)$#", "$1", $text[$i]);
$i++;
}
$i--;
$converted .= "<li>".convert($li)."</li>";
$i++;
}
$i--;
$converted .= "</ol>";
$transcripted = true;
}
}
if(!$transcripted){
$text[$i] = preg_replace("#^(.*)\!\[(.*)\]\((.*)\)(.*)$#", "$1<img alt=\"$2\" src=\"$3\" />$4", $text[$i]);
$text[$i] = preg_replace("#^(.*)\[(.*)\]\((.*)\)(.*)$#", "$1<a href=\"$3\">$2</a>$4", $text[$i]);
$text[$i] = preg_replace("#^(.*)\*\*(.+)\*\*(.*)$#", "$1<b>$2</b>$3", $text[$i]);
$text[$i] = preg_replace("#^(.*)\*(.+)\*(.*)$#", "$1<em>$2</em>$3", $text[$i]);
$text[$i] = preg_replace("#^(.*)(https?://[^ ]*[a-z])(.*)$#", "$1<a href=\"$2\">$2</a>$3", $text[$i]);
$text[$i] = preg_replace("#^(.*)`(.*)`(.*)$#", "$1<code>$2</code>$3", $text[$i]);
$converted .= $text[$i]."<br />";
}
}
return $converted;
}
function countIndentation($string){
$i = 0;
while($i < strlen($string) && $string[$i] == "\t") $i++;
return $i;
}
function md2html($text){
return convert(split($text));
}
echo md2html(file_get_contents("test.md"));
?>

3
views/article.php

@ -3,12 +3,13 @@ if(isset($_GET["ID"])){
if(!empty($_GET["ID"])){
include_once("lib/articles.php");
include_once("lib/users.php");
include_once("lib/md.php");
$article = getArticle($_GET["ID"]);
$authorName = getUserName($article["author"]);
$content = "<h1>".$article["title"]."</h1><article>".$article["content"]."</article><span>written by ".$authorName." on ".$article["date"]."</span>";
$content = "<h1>".$article["title"]."</h1><article>".convert($article["content"])."</article><span>written by ".$authorName." on ".$article["date"]."</span>";
}else{
$content = "Article ID is empty";
}