[英]Determine if 10 digit string is valid Amazon ASIN
我有一個 10 位數的字符串傳遞給我,我想在進行更多處理和/或重定向之前驗證它是否是有效的 ASIN。
我知道非 ISBN ASIN 將始終為非數字且長度為 10 個字符
我只想知道傳遞的項目是有效的 ASIN 還是只是一個搜索字符串,在我已經消除了它可能是 ISBN 之后。
例如,“SOUNDBOARD”是一個搜索詞,而“B000J5XS3C”是一個 ASIN,而“1412775884”是一個 ISBN。
有沒有一種輕量級的方法來檢查 ASIN?
@Leonid 評論說他找到了 ASIN BT00LLINKI
。
盡管 ASIN 似乎不是嚴格遞增的,但最舊的非 ISBN ASIN 確實比新 ASIN 具有更多的零。 也許我們不可避免地會開始看到沒有零填充的 ASIN(然后呢,我想知道......)。 所以我們現在正在尋找后跟九個字母數字字符(或 ISBN)的“B”——不幸的是,“丟失”零使得更容易得到誤報。
/^(B[\dA-Z]{9}|\d{9}(X|\d))$/
在 Javascript 中,我使用以下正則表達式來確定一個字符串是否屬於或包含似乎是 ASIN 的內容:
/^\s*(B\d{2}[A-Z\d]{7}|\d{9}[X\d])\s*$/
或者,無需擔心額外的空格或捕獲:
/^(B\d{2}[A-Z\d]{7}|\d{9}[X\d])$/
正如其他人所提到的,亞馬遜並沒有真正透露規范。 但實際上,我只看到了兩種可能的 ASIN 格式:
如果有人遇到不符合該模式的 ASIN,請加入。實際上可能會有比這更嚴格的限制,但我不確定。 非 ISBN ASIN 可能只使用字母字符的一個子集,但即便如此,它們也會使用其中的大部分。 有些似乎比其他人更頻繁地出現,至少(K、Z、Q、W...)
對於PHP,對於ASINs一個有效的正則表達式在這里。
function isAsin($string){ $ptn = "/B[0-9]{2}[0-9A-Z]{7}|[0-9]{9}(X|0-9])/"; return preg_match($ptn, $string, $matches) === 1; }
也許您可以在亞馬遜網站上檢查 ASIN 是否存在。
http://www.amazon.com/dp/YOUR10DIGITASIN
當產品存在時,此 URL 返回 http-statuscode=200,如果它不是有效的 ASIN,則返回 404。
在嘗試了幾個解決方案(包括投票最高的答案)后,它們在 PHP 中運行不佳。 (例如 8619203011 顯示為 ASIN)
這是非常有效的解決方案:
function isAsin($string){
$ptn = "/^(?i)(B0|BT)[0-9A-Z]{8}$/";
if (preg_match($ptn, $string, $matches)) {
return true;
}
}
$testAsins = array('k023l5bix8', 'bb03l5bix8', 'b143l5bix8', 'bt00plinki', ' ', '');
foreach ($testAsins as $testAsin) {
if(isAsin($testAsin)){
echo $testAsin." is ASIN"."<br>";
} else {
echo $testAsin." is NOT ASIN"."<br>";
}
}
解釋:
/^(?i)(B0|BT)[0-9A-Z]{8}$/
/^ = 開始
(?i) = 不區分大小寫
(B0|BT)= 以 B0 或 BT 開頭
[0-9A-Z]= 任何數字或字母
{8} = 允許 8 個數字或字母(在 B0 或 BT 的 +2 之上)
我有一個10位數字的字符串傳遞給我,我想在執行更多處理和/或重定向之前確認它是有效的ASIN。
我知道非ISBN ASIN將始終為非數字且長度為10個字符
我只是想知道傳遞的項目是一個有效的ASIN還是只是一個搜索字符串(在我已經消除了它可能是一個ISBN之后)。
例如,“ SOUNDBOARD”是搜索詞,而“ B000J5XS3C”是ASIN,而“ 1412775884”是ISBN。
有一種輕巧的方法來檢查ASIN嗎?
我有一個10位數字的字符串傳遞給我,我想在執行更多處理和/或重定向之前確認它是有效的ASIN。
我知道非ISBN ASIN將始終為非數字且長度為10個字符
我只是想知道傳遞的項目是一個有效的ASIN還是只是一個搜索字符串(在我已經消除了它可能是一個ISBN之后)。
例如,“ SOUNDBOARD”是搜索詞,而“ B000J5XS3C”是ASIN,而“ 1412775884”是ISBN。
有一種輕巧的方法來檢查ASIN嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.