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