From e85212bb66cda57a6579aee7f50281bba90141fd Mon Sep 17 00:00:00 2001 From: frankdelange Date: Mon, 22 Dec 2014 14:29:43 +0100 Subject: [PATCH] Improved ISBN regexes, again --- dist/files_opds-0.5.2.tar.gz | Bin 0 -> 44196 bytes files_opds/appinfo/info.xml | 2 +- files_opds/lib/isbn.php | 63 +++++++++++++++++------------------ 3 files changed, 32 insertions(+), 33 deletions(-) create mode 100644 dist/files_opds-0.5.2.tar.gz diff --git a/dist/files_opds-0.5.2.tar.gz b/dist/files_opds-0.5.2.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..43cb8eee6ce4dcdbd872232b63d34b736267ec9c GIT binary patch literal 44196 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Ŏ@czzoR5(RqhOpGu!x|A~dQS8z=0!PeHpshV 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
wjo^a~aZ&Ey4yR?Sj% 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 ZgY_Qh)BkvQQ|1Nof4WOOPDS catalog Personal OPDS catalog AGPL - 0.5.1 + 0.5.2 Frank de Lange 7.0 true diff --git a/files_opds/lib/isbn.php b/files_opds/lib/isbn.php index 5499dd7..3ba97fc 100644 --- a/files_opds/lib/isbn.php +++ b/files_opds/lib/isbn.php @@ -35,38 +35,8 @@ class Isbn public static function scan($text) { $match = array(); foreach($text as $line) { - /* generic ISBN 10/13 pattern */ - if(preg_match_all('/ISBN(?:[ -]?[1[03]]?)?:?\s*((97[89])?[X0-9-–]{10,14})/i',$line,$match)) { - foreach($match[1] as $hit) { - $hit = preg_replace('/[^0-9X]/i','',$hit); - if(self::validate($hit)) { - return $hit; - } - } - } - - /* single ISBN-13 targeted pattern (canonical format) */ - if(preg_match_all('/(97[89][ –-]?\d[ –-]?\d{4}[ –-]?\d{4}[ –-]?\d)/',$line,$match)) { - foreach($match[1] as $hit) { - $hit = preg_replace('/[^0-9]/','',$hit); - if(self::validate($hit)) { - return $hit; - } - } - } - - /* single ISBN-13 targeted pattern (free format) */ - if(preg_match_all('/(9[\d –-]{11,15}\d)/',$line,$match)) { - foreach($match[1] as $hit) { - $hit = preg_replace('/[^0-9]/','',$hit); - if(self::validate($hit)) { - return $hit; - } - } - } - - /* single ISBN-10 targeted pattern */ - if(preg_match_all('/(\d[\d –-]{8,11}[\dX])/i',$line,$match)) { + /* generic ISBN 10/13 pattern. Checks for unicode dashes ('‒–—―‑‐﹣--') as well as regular hyphens. */ + if(preg_match_all('/ISBN(?:[‒–—―‑‐﹣--]?(?:1[03])?)?:?\s*(?=[\d‒–—―‑‐﹣--]{10,17})(((?:97[89])[0-9‒–—―‑‐﹣--]{9,14})|([\d‒–—―‑‐﹣--]{9,12}[\dXx]))/u', $line, $match)) { foreach($match[1] as $hit) { $hit = preg_replace('/[^0-9X]/i','',$hit); if(self::validate($hit)) { @@ -76,6 +46,35 @@ class Isbn } } + /* If nothing found, try prefix-less versions. Even though ISBN numbers should be + * presented with a 'ISBN' prefix, some publications omit this. These patterns + * are liable to generate false positives, so they should only be run after the + * prefixed version has exhausted the search without returning results. + */ + + foreach($text as $line) { + /* prefix-less ISBN-13 targeted pattern */ + if(preg_match_all('/(97[89][\d‒–—―‑‐﹣--]\d{9,13}\d)/u',$line,$match)) { + foreach($match[1] as $hit) { + $hit = preg_replace('/[^0-9]/','',$hit); + if(self::validate($hit)) { + return $hit; + } + } + } + + /* single ISBN-10 targeted pattern */ + if(preg_match_all('/(\d[\d‒–—―‑‐﹣--]{8,11}[\dXx])/u',$line,$match)) { + foreach($match[1] as $hit) { + $hit = preg_replace('/[^0-9X]/i','',$hit); + if(self::validate($hit)) { + return $hit; + } + } + } + } + + /* No ISBN found */ return false; }