色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

isbn php 還原

劉柏宏1年前7瀏覽0評論

ISBN(International Standard Book Number)是國際標準書號的縮寫,也就是在出版社出版圖書時給一本書分配的一串數字。在圖書館、書店、網上購物等地方,我們經常看見這個號碼。對于圖書的管理、銷售、存儲等方面都非常重要,ISBN號碼不僅可以代表一本書,還可以代表一種語言、一種出版物等的標識。ISBN號碼通常由13位數字組成。針對ISBN號碼的處理,PHP提供了非常方便的函數,這篇文章就詳細介紹一下如何使用PHP函數的方法,還原出ISBN號碼。

使用PHP函數還原出ISBN,主要需要用到substr()函數、preg_replace()函數等。比如我們要還原這個ISBN號:978-7-111-11453-0,那么首先應該使用substr()函數,將其中的連字符、空格等非數字留下來:

$isbn = '978-7-111-11453-0';
$sep = preg_replace('/\d/', '', $isbn);
$numbers = str_replace($sep, '', $isbn);
echo $numbers; //輸出9787111114530

代碼中,首先定義了ISBN號碼,然后使用preg_replace()函數將其中的連字符、空格等非數字留下來作為分隔符,$numbers變量則是通過str_replace()函數去除分隔符后的純數字字符串。

接下來,我們需要驗證ISBN是否合法,通常來說,ISBN的最后一位數字是通過前面的12位數字計算得到的校驗碼。具體的計算方法是,將每一位數字乘以它在整個ISBN中的位置所對應的權值,然后將所有的結果相加,最后再對結果做模運算,用這個結果去替換校驗碼,如果這個值為10,則校驗碼用X代替。下面是PHP代碼實現:

function validate_isbn($isbn)
{
if (strlen($isbn) != 13) {
return false;
}
$weights = [1, 3];
$sum = 0;
for ($i = 0; $i< 12; $i++) {
$sum += $isbn[$i] * $weights[$i % 2];
}
$check_digit = (10 - $sum % 10) % 10;
return $isbn[12] == $check_digit;
}
//測試
$isbn = '978-7-111-11453-0';
if (validate_isbn($isbn)) {
echo '是合法的ISBN';
} else {
echo '不是合法的ISBN';
}

代碼中,我們先判斷$isbn的長度是否為13,如果不是,則認為它是非法的,然后定義了一個數組$weights,里面的元素用于表示每一位數字所對應的權值。接著,我們使用for循環計算出ISBN號碼前12位的加權和,并根據計算結果計算校驗碼,最后對校驗碼進行驗證即可。

通過上述的代碼,我們可以輕松地還原出ISBN號碼,并且判斷出它是否合法。這種方法不僅適用于ISBN號碼,還可以應用于其他需要解析和校驗的字符串。