正規表示式是一種強大的文字比對工具,可以有效驗證輸入的資料是否符合指定的格式要求。在圖書管理系統等應用程式中,ISBN(International Standard Book Number)號碼是值得關注的資料格式,其格式有一定的規則。在本文中,我們將介紹如何使用 PHP 中的正規表示式來驗證圖書 ISBN 號碼格式,以確保系統能夠正確地處理 ISBN 號碼相關的業務邏輯。
ISBN 號碼是用於唯一識別圖書的標準編號,通常包含 ISBN-10 和 ISBN-13 兩種格式。其中,ISBN-10 格式由 10 位數字組成,其中最後一位可能是 X;而 ISBN-13 格式由 13 位數字組成。在本文中,我們將主要關注 ISBN-13 格式,並透過正規表示式來驗證其格式是否正確。
ISBN-13 號碼的格式規則如下:
(1)前三位數字表示書籍所屬國別或語言區別,對於不同的國家或地區會有不同的前綴數字。例如,中國的前綴數字為 978 或 979。
(2)接下來的 9 位數字是書籍的註冊號碼,由出版社分配給每本書。
(3)最後一位數字是校驗碼(Check Digit),校驗碼的計算方法如下:
1)將前12 位數字依照權重加權求和,其中偶數位數字的權重為3,奇數位數字的權重為1;
2)將所得結果除以10 取餘數,得到的餘數用10 減去,所得差值即為校驗碼。
例如,書籍《PHP與MySQL開發從入門到精通》的ISBN-13 號碼為978-7-81037-609-2,其中前12 位數字的加權和為1×9 3×7 1×8 3×8 1×1 3×0 1×3 3×7 1×6 3×0 1×9 3×2=99,取餘數為9,用10 減去所得餘數得到1,即最後一位元校驗碼為1。
為了驗證ISBN 號碼格式是否正確,我們可以使用PHP 中的正規表示式函數preg_match() ,其語法如下:
preg_match(string $pattern, string $subject, array &$matches = null, int $flags = 0, int $offset = 0): int|false
其中,$pattern 是正規表示式模式,$subject 是要匹配的字串,$matches 是匹配結果數組,$flags 是選項標誌,$offset 是起始匹配位置。當匹配成功時,函數傳回 1;當匹配失敗時,函數傳回 0。
以下是使用PHP 正規表示式驗證ISBN-13 號碼格式的範例程式碼:
function is_valid_isbn($isbn) { $pattern = '/^97[89]d{10}$/'; // 匹配 ISBN-13 号码格式的正则表达式 if(preg_match($pattern, $isbn)) { // 使用 preg_match() 函数进行匹配 $digits = str_split($isbn); $check_digit = 0; // 校验码的计算过程 for($i=0; $i<12; $i+=2) { $check_digit += $digits[$i] + 3 * $digits[$i+1]; } $check_digit = (10 - $check_digit % 10) % 10; return $digits[12] == $check_digit; } else { return false; } } // 验证 ISBN-13 号码格式 $isbn1 = '978-7-81037-609-1'; $isbn2 = '978-7-81037-609-2'; if(is_valid_isbn(str_replace('-', '', $isbn1))) { echo $isbn1.' 是一个有效的 ISBN-13 号码。'; } else { echo $isbn1.' 不是一个有效的 ISBN-13 号码。'; } if(is_valid_isbn(str_replace('-', '', $isbn2))) { echo $isbn2.' 是一个有效的 ISBN-13 号码。'; } else { echo $isbn2.' 不是一个有效的 ISBN-13 号码。'; }
在上面的範例程式碼中,我們首先定義了一個名為is_valid_isbn() 的函數,其參數為要驗證的ISBN 號碼。此函數首先使用正規表示式來驗證 ISBN-13 號碼的格式是否正確,如果格式正確,則進行校驗碼的計算,並與最後一位數字進行比較,以判斷該 ISBN 號碼是否有效。其中,str_replace('-', '', $isbn) 的作用是刪除 ISBN 號碼中的短線分隔符,以便進行計算。
最後,我們可以對一些 ISBN 號碼進行測試,以驗證函數的有效性。當輸入的 ISBN 號碼格式正確且校驗碼計算正確時,函數會傳回 true;否則,傳回 false。透過這種方式,我們可以有效驗證輸入的 ISBN 號碼是否符合規則,確保系統能夠正確地處理 ISBN 相關的業務邏輯。
本文介紹如何使用PHP 中的正規表示式來驗證圖書ISBN-13 號碼的格式是否正確,可以有效地判斷輸入資料是否符合規則。在實際開發中,我們可以根據實際需求來定義不同的正規表示式模式,以適應不同的資料格式驗證需求。正規表示式是一種非常強大的文字匹配工具,掌握正規表示式的使用技巧對於開發人員來說是至關重要的。
以上是如何在 PHP 中使用正規表示式來驗證書籍 ISBN 編號格式的詳細內容。更多資訊請關注PHP中文網其他相關文章!