ISBN碼是一本書的唯一識別碼,用來識別國際標準書號。 ISBN碼通常由13位數字組成,其中最後一位是根據前面12位數字計算出來的校驗碼。在PHP中,我們可以使用正規表示式來匹配ISBN碼,以確保其正確性。
ISBN碼的格式如下:
ISBN13:978-7-111-40543-9
其中,前三位為EAN國家代碼,第四到第六位為出版社代碼,第七到第十二位為書的編號,最後一位為校驗碼。校驗碼的計算方式可以參考這個連結:https://zh.wikipedia.org/wiki/International_Standard_Book_Number#EAN/UCC-地理碼和校驗碼。
我們可以使用正規表示式來符合ISBN13碼,如下:
$pattern = '/^978-[d]{1,5}-[d]{1,7}-[d]{1,6}-[dX]$/';
其中,"^"和"$"表示字串的開頭和結尾;"[d]"表示任意一個數字,"{1,5}"表示該數字重複1到5次;"[dX]"表示任一個數字或字母X。
我們來看一個完整的PHP程式碼實作:
<?php function checkISBN($isbn) { $pattern = '/^978-[d]{1,5}-[d]{1,7}-[d]{1,6}-[dX]$/'; if (preg_match($pattern, $isbn)) { $digits = str_replace('-', '', substr($isbn, 0, -1)); $length = strlen($digits); $sum = 0; for ($i = 0; $i < $length; $i++) { $sum += intval($digits[$i]) * (($i % 2 == 0) ? 1 : 3); } $checkDigit = 10 - ($sum % 10); if ($checkDigit == 10) { $checkDigit = 'X'; } return $checkDigit == substr($isbn, -1); } else { return false; } } $isbn = '978-7-111-40543-9'; if (checkISBN($isbn)) { echo $isbn . ' is a valid ISBN!'; } else { echo $isbn . ' is not a valid ISBN!'; } ?>
這段程式碼中,我們定義了一個名為checkISBN的函數,該函數接收一個ISBN碼作為參數。函數內部先使用正規表示式對ISBN碼進行格式校驗,然後根據前12位數字計算校驗碼,最後與原ISBN碼的校驗碼進行比較,以確定其是否有效。
我們可以將上述程式碼儲存為PHP文件,然後在命令列中執行,輸出結果為:
978-7-111-40543-9 is a valid ISBN!
如果改變$isbn的值為非法的ISBN碼,例如'978 -7-111-40543-0',則輸出結果為:
978-7-111-40543-0 is not a valid ISBN!
總結:
正規表示式是一個非常強大且靈活的工具,具有廣泛的適用性。在PHP中,我們可以使用正規表示式來進行字串的匹配和格式校驗等操作,其中對於ISBN碼的校驗也非常方便。開發者可以根據自己的實際需求,靈活運用正規表示式,提高程式碼效率和可維護性。
以上是PHP正規表示式實戰:匹配ISBN碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!