Use [0-9]{4} spelling time

This commit is contained in:
Joshua Ramon Enslin 2020-10-03 19:13:27 +02:00 committed by Stefan Rohde-Enslin
parent ff35ca7bd9
commit 4e934e380c

View File

@ -483,16 +483,14 @@ final class NodaTimeSplitter {
$datum = self::clean_input($datum); $datum = self::clean_input($datum);
// 10000-20000 // 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); $start = substr($datum, 0, 5);
$end = substr($datum, 6, 5); $end = substr($datum, 6, 5);
return [$start, $end, "00", "00", "+", ""]; return [$start, $end, "00", "00", "+", ""];
} }
// 0000-0000 // 0000-0000
if (!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)) {
|| !empty(preg_match("/^[0-9][0-9][0-9][0-9](\-|\/)[0-9][0-9][0-9][0-9]\.$/", $datum))
) {
$start = substr($datum, 0, 4); $start = substr($datum, 0, 4);
$end = substr($datum, 5, 4); $end = substr($datum, 5, 4);
return [$start, $end, "00", "00", "+", ""]; return [$start, $end, "00", "00", "+", ""];
@ -538,7 +536,7 @@ final class NodaTimeSplitter {
} }
// Intl': 2020-12-20 // 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); $start = substr($datum, 0, 4);
$month = substr($datum, 5, 2); $month = substr($datum, 5, 2);
if (intval($month) < 13) { if (intval($month) < 13) {
@ -550,7 +548,7 @@ final class NodaTimeSplitter {
} }
} }
// Intl': 2020-12 // 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); $start = substr($datum, 0, 4);
$month = substr($datum, 5, 2); $month = substr($datum, 5, 2);
if (intval($month) < 13) { if (intval($month) < 13) {
@ -562,68 +560,68 @@ final class NodaTimeSplitter {
} }
// German MM.JJJJ // 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); $start = substr($datum, 3, 4);
$month = substr($datum, 0, 2); $month = substr($datum, 0, 2);
return [$start, $start, $month, "00", "+", ""]; 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); $start = substr($datum, 2, 4);
$month = "0" . substr($datum, 0, 1); $month = "0" . substr($datum, 0, 1);
return [$start, $start, $month, "00", "+", ""]; 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); $start = substr($datum, 0, 4);
$month = substr($datum, 5, 2); $month = substr($datum, 5, 2);
return [$start, $start, $month, "00", "+", ""]; 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); $start = substr($datum, 0, 4);
$endDigits = substr($datum, 5, 2); $endDigits = substr($datum, 5, 2);
if (intval($endDigits) > 12) return [$start, substr($datum, 0, 2) . $endDigits, "00", "00", "+", ""]; if (intval($endDigits) > 12) return [$start, substr($datum, 0, 2) . $endDigits, "00", "00", "+", ""];
} }
// 01.01.1920-31.12.1930 // 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); $start = substr($datum, 6, 4);
$end = substr($datum, -4); $end = substr($datum, -4);
return [$start, $end, "00", "00", "+", ""]; return [$start, $end, "00", "00", "+", ""];
} }
// 303-305 (n. Chr.) // 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); $start = substr($datum, 0, 3);
$end = substr($datum, -3); $end = substr($datum, -3);
return ["0" . $start, "0" . $end, "00", "00", "+", ""]; return ["0" . $start, "0" . $end, "00", "00", "+", ""];
} }
// 1720-120 // 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); $start = substr($datum, 0, 4);
$end = substr($datum, -3); $end = substr($datum, -3);
return ["0" . $start, "0" . $end, "00", "00", "+", ""]; return ["0" . $start, "0" . $end, "00", "00", "+", ""];
} }
// 20-30 (n. Chr.) // 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); $start = substr($datum, 0, 2);
$end = substr($datum, -2); $end = substr($datum, -2);
return ["00" . $start, "00" . $end, "00", "00", "+", ""]; return ["00" . $start, "00" . $end, "00", "00", "+", ""];
} }
// 1920 // 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); $start = substr($datum, 0, 4);
return [$start, $start, "00", "00", "+", ""]; return [$start, $start, "00", "00", "+", ""];
} }
// 1920 // 1920
if (preg_match("/^[0-9][0-9][0-9]$/", $datum)) { if (preg_match("/^[0-9]{3}$/", $datum)) {
$start = "0" . substr($datum, 0, 3); $start = "0" . substr($datum, 0, 3);
return [$start, $start, "00", "00", "+", ""]; 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); $start = "00" . substr($datum, 0, 2);
return [$start, $start, "00", "00", "+", ""]; return [$start, $start, "00", "00", "+", ""];
} }
@ -643,29 +641,37 @@ final class NodaTimeSplitter {
$datum = self::clean_input($datum); $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); $start = substr($datum, 0, 4);
$month = substr($datum, 5, 2); $month = substr($datum, 5, 2);
$day = substr($datum, 8, 2); $day = substr($datum, 8, 2);
return [$start, "?", $month, $day, "+", ""]; 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); $start = substr($datum, 0, 4);
$month = substr($datum, 5, 2); $month = substr($datum, 5, 2);
return [$start, "?", $month, "00", "+", ""]; 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); $start = substr($datum, 1, 4);
$month = substr($datum, 6, 2); $month = substr($datum, 6, 2);
$day = substr($datum, 9, 2); $day = substr($datum, 9, 2);
return ["?", $start, $month, $day, "+", ""]; 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); $start = substr($datum, 1, 4);
$month = substr($datum, 6, 2); $month = substr($datum, 6, 2);
return ["?", $start, $month, "00", "+", ""]; 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 (preg_match("/^(Ab|Seit|seit)\ /", $datum)) {
if (($spacePos = strpos($datum, " ")) === false) { if (($spacePos = strpos($datum, " ")) === false) {
@ -772,16 +778,16 @@ final class NodaTimeSplitter {
} }
// 17.-18. Jahrhundert // 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)); return self::negotiate_century_span_bce_ce(substr($datum, 0, 2), substr($datum, 4, 2));
} }
// 17-18. Jahrhundert // 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)); return self::negotiate_century_span_bce_ce(substr($datum, 0, 2), substr($datum, 3, 2));
} }
// 1.-12. Jahrhundert // 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)); return self::negotiate_century_span_bce_ce(substr($datum, 0, 1), substr($datum, 3, 2));
} }
// 1.-2. Jahrhundert // 1.-2. Jahrhundert
@ -815,7 +821,7 @@ final class NodaTimeSplitter {
return [$start, $ende, "00", "00", $bcBceIndicator, ""]; 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); $start = substr($datum, 0, 4);
$ende = (string)(intval($start) + 9); $ende = (string)(intval($start) + 9);
return [$start, $ende, "00", "00", $bcBceIndicator, ""]; return [$start, $ende, "00", "00", $bcBceIndicator, ""];