Changing the italic pattern and adding the link handling

master
Nicolas Ong 2025-02-17 02:38:32 +01:00
parent bf26f52bb3
commit 9a78160141
1 changed files with 9 additions and 5 deletions

View File

@ -6,14 +6,16 @@ final class ArticleParser
const PATTERN_DATE = "|\./data/articles/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+).txt|"; const PATTERN_DATE = "|\./data/articles/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+).txt|";
const PATTERN_TAGS = "/^\{(([a-zA-Z0-9]+,*)+)\}$/"; const PATTERN_TAGS = "/^\{(([a-zA-Z0-9]+,*)+)\}$/";
const PATTERN_IMG = "/^([a-zA-Z0-9\-_\.]+\.(jpg|png)) \((.*)\)$/"; const PATTERN_IMG = "/^([a-zA-Z0-9\-_\.]+\.(jpg|png)) \((.*)\)$/";
const PATTERN_BOLD = "/\*([^*]*)\*/"; const PATTERN_BOLD = "/\*([^*]+)\*/";
const PATTERN_ITALIC = "|/([^/]*)/|"; const PATTERN_ITALIC = "/~([^~]+)~/";
const PATTERN_UNDERLINE = "/_([^_]*)_/"; const PATTERN_UNDERLINE = "/_([^_]+)_/";
const PATTERN_LINK = "/\[(.+) \(([a-z]+:\/\/.+)\)\]/";
const REPLACE_DATE = "$1-$2-$3"; const REPLACE_DATE = "$1-$2-$3";
const REPLACE_REF = "$4"; const REPLACE_REF = "$4";
const REPLACE_BOLD = "<strong>$1</strong>"; const REPLACE_BOLD = "<strong>$1</strong>";
const REPLACE_ITALIC = "<em>$1</em>"; const REPLACE_ITALIC = "<em>$1</em>";
const REPLACE_UNDERLINE = "<u>$1</u>"; const REPLACE_UNDERLINE = "<u>$1</u>";
const REPLACE_LINK = "<a href=\"$2\">$1</a>";
private bool $in_p = false; private bool $in_p = false;
private array $content = []; private array $content = [];
@ -100,12 +102,14 @@ final class ArticleParser
$patterns = [ $patterns = [
self::PATTERN_BOLD, self::PATTERN_BOLD,
self::PATTERN_ITALIC, self::PATTERN_ITALIC,
self::PATTERN_UNDERLINE self::PATTERN_UNDERLINE,
self::PATTERN_LINK
]; ];
$replacements = [ $replacements = [
self::REPLACE_BOLD, self::REPLACE_BOLD,
self::REPLACE_ITALIC, self::REPLACE_ITALIC,
self::REPLACE_UNDERLINE self::REPLACE_UNDERLINE,
self::REPLACE_LINK
]; ];
return preg_replace($patterns, $replacements, htmlspecialchars($line, ENT_HTML5, "UTF-8")); return preg_replace($patterns, $replacements, htmlspecialchars($line, ENT_HTML5, "UTF-8"));
} }