From 4e934e380c51d8b2fc89c0738968fecf3ea0b021 Mon Sep 17 00:00:00 2001 From: Joshua Ramon Enslin Date: Sat, 3 Oct 2020 19:13:27 +0200 Subject: [PATCH] Use [0-9]{4} spelling time --- src/NodaTimeSplitter.php | 56 ++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/src/NodaTimeSplitter.php b/src/NodaTimeSplitter.php index 035af37..dec8721 100644 --- a/src/NodaTimeSplitter.php +++ b/src/NodaTimeSplitter.php @@ -483,16 +483,14 @@ final class NodaTimeSplitter { $datum = self::clean_input($datum); // 10000-20000 - if (!empty(preg_match("/^[0-9][0-9][0-9][0-9][0-9](\-|\/)[0-9][0-9][0-9][0-9][0-9]$/", $datum))) { + if (!empty(preg_match("/^[0-9]{5}(\-|\/)[0-9]{5}$/", $datum))) { $start = substr($datum, 0, 5); $end = substr($datum, 6, 5); return [$start, $end, "00", "00", "+", ""]; } // 0000-0000 - if (!empty(preg_match("/^[0-9][0-9][0-9][0-9](\-|\/)[0-9][0-9][0-9][0-9]$/", $datum)) - || !empty(preg_match("/^[0-9][0-9][0-9][0-9](\-|\/)[0-9][0-9][0-9][0-9]\.$/", $datum)) - ) { + if (preg_match("/^[0-9]{4}(\-|\/)[0-9]{4}(\.|)$/", $datum)) { $start = substr($datum, 0, 4); $end = substr($datum, 5, 4); return [$start, $end, "00", "00", "+", ""]; @@ -538,7 +536,7 @@ final class NodaTimeSplitter { } // Intl': 2020-12-20 - if (preg_match("/^[0-9][0-9][0-9][0-9]\-[0-9][0-9]\-[0-9][0-9]$/", $datum)) { // German Y-m + if (preg_match("/^[0-9]{4}\-[0-9]{2}\-[0-9]{2}$/", $datum)) { // German Y-m $start = substr($datum, 0, 4); $month = substr($datum, 5, 2); if (intval($month) < 13) { @@ -550,7 +548,7 @@ final class NodaTimeSplitter { } } // Intl': 2020-12 - if (preg_match("/^[0-9][0-9][0-9][0-9]\-[0-9][0-9]$/", $datum)) { // German Y-m + if (preg_match("/^[0-9]{4}\-[0-9]{2}$/", $datum)) { // German Y-m $start = substr($datum, 0, 4); $month = substr($datum, 5, 2); if (intval($month) < 13) { @@ -562,68 +560,68 @@ final class NodaTimeSplitter { } // German MM.JJJJ - if (preg_match("/^[0-9][0-9]\.[0-9][0-9][0-9][0-9]$/", $datum)) { // German Y-m + if (preg_match("/^[0-9]{2}\.[0-9]{4}$/", $datum)) { // German Y-m $start = substr($datum, 3, 4); $month = substr($datum, 0, 2); return [$start, $start, $month, "00", "+", ""]; } - if (preg_match("/^[0-9]\.[0-9][0-9][0-9][0-9]$/", $datum)) { // German Y-m + if (preg_match("/^[0-9]\.[0-9]{4}$/", $datum)) { // German Y-m $start = substr($datum, 2, 4); $month = "0" . substr($datum, 0, 1); return [$start, $start, $month, "00", "+", ""]; } - if (preg_match("/^[0-9][0-9][0-9][0-9]\.[0-9][0-9]$/", $datum)) { // Hungarian Y-m + if (preg_match("/^[0-9]{4}\.[0-9]{2}$/", $datum)) { // Hungarian Y-m $start = substr($datum, 0, 4); $month = substr($datum, 5, 2); return [$start, $start, $month, "00", "+", ""]; } - if (preg_match("/^[0-9][0-9][0-9][0-9]\-[0-9][0-9]$/", $datum)) { // Time spans: 1945-46 + if (preg_match("/^[0-9]{4}\-[0-9]{2}$/", $datum)) { // Time spans: 1945-46 $start = substr($datum, 0, 4); $endDigits = substr($datum, 5, 2); if (intval($endDigits) > 12) return [$start, substr($datum, 0, 2) . $endDigits, "00", "00", "+", ""]; } // 01.01.1920-31.12.1930 - if (preg_match("/^01\.01\.[0-9][0-9][0-9][0-9]\-31\.12\.[0-9][0-9][0-9][0-9]$/", $datum)) { // Hungarian Y-m + if (preg_match("/^01\.01\.[0-9]{4}\-31\.12\.[0-9]{4}$/", $datum)) { // Hungarian Y-m $start = substr($datum, 6, 4); $end = substr($datum, -4); return [$start, $end, "00", "00", "+", ""]; } // 303-305 (n. Chr.) - if (preg_match("/^[0-9][0-9][0-9]\-[0-9][0-9][0-9]$/", $datum)) { // Hungarian Y-m + if (preg_match("/^[0-9]{3}\-[0-9]{3}$/", $datum)) { // Hungarian Y-m $start = substr($datum, 0, 3); $end = substr($datum, -3); return ["0" . $start, "0" . $end, "00", "00", "+", ""]; } // 1720-120 - if (preg_match("/^[0-9][0-9][0-9][0-9]\-[0-9][0-9][0-9]$/", $datum)) { // Hungarian Y-m + if (preg_match("/^[0-9]{4}\-[0-9]{3}$/", $datum)) { // Hungarian Y-m $start = substr($datum, 0, 4); $end = substr($datum, -3); return ["0" . $start, "0" . $end, "00", "00", "+", ""]; } // 20-30 (n. Chr.) - if (preg_match("/^[0-9][0-9]\-[0-9][0-9]$/", $datum)) { // 20-40 (n. Chr.) + if (preg_match("/^[0-9]{2}\-[0-9]{2}$/", $datum)) { // 20-40 (n. Chr.) $start = substr($datum, 0, 2); $end = substr($datum, -2); return ["00" . $start, "00" . $end, "00", "00", "+", ""]; } // 1920 - if (preg_match("/^[0-9][0-9][0-9][0-9]$/", $datum)) { + if (preg_match("/^[0-9]{4}(\.|)$/", $datum)) { $start = substr($datum, 0, 4); return [$start, $start, "00", "00", "+", ""]; } // 1920 - if (preg_match("/^[0-9][0-9][0-9]$/", $datum)) { + if (preg_match("/^[0-9]{3}$/", $datum)) { $start = "0" . substr($datum, 0, 3); return [$start, $start, "00", "00", "+", ""]; } - if (preg_match("/^[0-9][0-9]$/", $datum)) { + if (preg_match("/^[0-9]{2}$/", $datum)) { $start = "00" . substr($datum, 0, 2); return [$start, $start, "00", "00", "+", ""]; } @@ -643,29 +641,37 @@ final class NodaTimeSplitter { $datum = self::clean_input($datum); - if (preg_match("/^[0-9][0-9][0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\-$/", $datum)) { // Hungarian Y-m + if (preg_match("/^[0-9]{4}\.[0-9]{2}\.[0-9]{2}\-$/", $datum)) { // Hungarian Y-m $start = substr($datum, 0, 4); $month = substr($datum, 5, 2); $day = substr($datum, 8, 2); return [$start, "?", $month, $day, "+", ""]; } - if (preg_match("/^[0-9][0-9][0-9][0-9]\.[0-9][0-9]\-$/", $datum)) { // Hungarian Y-m + if (preg_match("/^[0-9]{4}\.[0-9]{2}\-$/", $datum)) { // Hungarian Y-m $start = substr($datum, 0, 4); $month = substr($datum, 5, 2); return [$start, "?", $month, "00", "+", ""]; } + if (preg_match("/^[0-9]{4}\-$/", $datum)) { // Hungarian Y- + $start = substr($datum, 0, 4); + return [$start, "?", "00", "00", "+", ""]; + } - if (preg_match("/^\-[0-9][0-9][0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]$/", $datum)) { // Hungarian Y-m + if (preg_match("/^\-[0-9]{4}\.[0-9]{2}\.[0-9]{2}$/", $datum)) { // Hungarian Y-m $start = substr($datum, 1, 4); $month = substr($datum, 6, 2); $day = substr($datum, 9, 2); return ["?", $start, $month, $day, "+", ""]; } - if (preg_match("/^\-[0-9][0-9][0-9][0-9]\.[0-9][0-9]$/", $datum)) { // Hungarian Y-m + if (preg_match("/^\-[0-9]{4}\.[0-9]{2}$/", $datum)) { // Hungarian Y-m $start = substr($datum, 1, 4); $month = substr($datum, 6, 2); return ["?", $start, $month, "00", "+", ""]; } + if (preg_match("/^\-[0-9]{4}$/", $datum)) { // Hungarian -Y + $start = substr($datum, 1, 4); + return ["?", $start, "00", "00", "+", ""]; + } if (preg_match("/^(Ab|Seit|seit)\ /", $datum)) { if (($spacePos = strpos($datum, " ")) === false) { @@ -772,16 +778,16 @@ final class NodaTimeSplitter { } // 17.-18. Jahrhundert - if (preg_match("/^[0-9][0-9]\.\-[0-9][0-9]\.\ (Jh\.|Jahrhundert|sz|század)$/", $datum)) { + if (preg_match("/^[0-9]{2}\.\-[0-9]{2}\.\ (Jh\.|Jahrhundert|sz|század)$/", $datum)) { return self::negotiate_century_span_bce_ce(substr($datum, 0, 2), substr($datum, 4, 2)); } // 17-18. Jahrhundert - if (preg_match("/^[0-9][0-9]\-[0-9][0-9]\.\ (Jh\.|Jahrhundert|sz|század)$/", $datum)) { + if (preg_match("/^[0-9]{2}\-[0-9]{2}\.\ (Jh\.|Jahrhundert|sz|század)$/", $datum)) { return self::negotiate_century_span_bce_ce(substr($datum, 0, 2), substr($datum, 3, 2)); } // 1.-12. Jahrhundert - if (preg_match("/^[0-9]\.\-[0-9][0-9]\.\ (Jh\.|Jahrhundert|sz|század)$/", $datum)) { + if (preg_match("/^[0-9]\.\-[0-9]{2}\.\ (Jh\.|Jahrhundert|sz|század)$/", $datum)) { return self::negotiate_century_span_bce_ce(substr($datum, 0, 1), substr($datum, 3, 2)); } // 1.-2. Jahrhundert @@ -815,7 +821,7 @@ final class NodaTimeSplitter { return [$start, $ende, "00", "00", $bcBceIndicator, ""]; } - if (preg_match("/^[0-9][0-9][0-9]0(er|er\ Jahre|\-es\ évek|\-as\ \évek)$/", $datum)) { + if (preg_match("/^[0-9]{3}0(er|er\ Jahre|\-es\ évek|\-as\ \évek)$/", $datum)) { $start = substr($datum, 0, 4); $ende = (string)(intval($start) + 9); return [$start, $ende, "00", "00", $bcBceIndicator, ""];