diff --git a/src/MD_STD_IN.php b/src/MD_STD_IN.php index 829ec56..fe7b4e6 100644 --- a/src/MD_STD_IN.php +++ b/src/MD_STD_IN.php @@ -233,8 +233,16 @@ final class MD_STD_IN { } // Check for valid schemes - if (MD_STD::startsWithAny($output, ['https://', 'http://', 'ftp://']) === false) { - throw new MDInvalidUrl("Invalid input URL"); + try { + if (MD_STD::startsWithAny($output, ['https://', 'http://', 'ftp://']) === false) { + throw new MDInvalidUrl("Invalid input URL" . PHP_EOL . $output . PHP_EOL . strtolower($output)); + } + } + catch (MDInvalidUrl $e) { + if (MD_STD::startsWithAny(strtolower($output), ['https://', 'http://', 'ftp://']) === true) { + $output = strtolower(substr($output, 0, 8)) . substr($output, 8); + } + else throw $e; } if (\str_contains($output, '.') === false) { diff --git a/src/testing/MD_STD_TEST_PROVIDERS.php b/src/testing/MD_STD_TEST_PROVIDERS.php index 4d3b2b2..bfb23a1 100644 --- a/src/testing/MD_STD_TEST_PROVIDERS.php +++ b/src/testing/MD_STD_TEST_PROVIDERS.php @@ -45,6 +45,7 @@ final class MD_STD_TEST_PROVIDERS { return [ 'Regular URL without path or query' => ['https://www.museum-digital.org', 'https://www.museum-digital.org'], + 'URL with uppercase character in scheme' => ['Https://www.museum-digital.org', 'https://www.museum-digital.org'], 'URL with cyrillic characters, HTML-encoded ' => [ 'https://sr.wikipedia.org/wiki/%D0%91%D0%B5%D0%BE%D0%B3%D1%80%D0%B0%D0%B4', 'https://sr.wikipedia.org/wiki/%D0%91%D0%B5%D0%BE%D0%B3%D1%80%D0%B0%D0%B4', @@ -98,6 +99,8 @@ final class MD_STD_TEST_PROVIDERS { ]; } + $output['Mail address is too long'] = [str_repeat("a", 10000) . '@example.com']; + return $output; }