diff --git a/src/enums/MDNodaRepository.php b/src/enums/MDNodaRepository.php index 32a93ab..d558646 100644 --- a/src/enums/MDNodaRepository.php +++ b/src/enums/MDNodaRepository.php @@ -438,6 +438,11 @@ enum MDNodaRepository implements MDValueEnumInterface, JsonSerializable { $id = strtr($id, $toRemove); } + // Handle extended IDs (like "4114170-2 (Fenster (Motiv)") + if (str_contains($id, '(')) { + $id = trim(explode('(', $id)[0]); + } + // There is an issue with this regex if (preg_match("/^[0-9-X]*$/", $id) === false) { return false; diff --git a/tests/MDNodaRepositoryTest.php b/tests/MDNodaRepositoryTest.php index 5a72446..54489f2 100644 --- a/tests/MDNodaRepositoryTest.php +++ b/tests/MDNodaRepositoryTest.php @@ -36,6 +36,8 @@ final class MDNodaRepositoryTest extends TestCase { self::assertEquals("1037602218", MDNodaRepository::gnd->validateId("https://explore.gnd.network/gnd/1037602218")); self::assertEquals("102423008", MDNodaRepository::gnd->validateId("102423008")); self::assertEquals("102423008", MDNodaRepository::gnd->validateId("102423008,")); + self::assertEquals("4114170-2", MDNodaRepository::gnd->validateId("4114170-2")); + self::assertEquals("4114170-2", MDNodaRepository::gnd->validateId("4114170-2 (Fenster (Motiv)")); self::assertEquals(false, MDNodaRepository::gnd->validateId("fkld;s102423008")); // NDL (Japan)