このサイトでは、掲示板の新規投稿時や掲示板を含む各記事へのコメント時に ASIN を入力することで Amazon ECS を利用した商品情報の表示を行っているです。
掲示板の新規投稿時は、スキン + plugin で、コメント時は rnote.php の改造で対応しています。
あ、ちなみに ASIN というのは Amazon Standard Identification Number の略で Amazon が取り扱っている商品に付けている管理コードです。書籍では ISBN がそのまま ASIN になります。
で、問題は ASIN 欄に誤った指定をしても特別なチェックをしてなかったということです(^^;
というわけで一応簡単なチェックを行うよう rnote.php の改造を行ってしまいました(^^)/
そのチェック内容はというと…
- 10文字の数字かアルファベット大文字で構成されていること。
- ISBN っぽいときにはチェックディジットが一致していること。
です。
実際のチェック関数はこんな感じです(^^)b
function is_wrong_asin( $asin )
{
if( strlen( $asin ) == 0 ) { return false; }
if( ! preg_match( '/^[0-9A-Z]{10}$/', $asin ) ) { return true; }
if( preg_match( '/^[0-9]{9}[0-9X]$/', $asin ) )
{
$sum = 0;
for( $i = 0; $i < 9; $i ++ )
{
$sum += substr( $asin, $i, 1 ) * ( $i + 1 );
}
$sum %= 11;
if( $sum == 10 ) { $sum = 'X'; }
if( $sum != substr( $asin, $i, 1 ) ) { return true; }
}
return false;
}
文字列から 1文字取り出すところがあんまりスマートな感じしないですが…これしか関数見つけられませんでした(ノд`。)
なお ISBN のチェックディジットに関しては、Shibutani's Home PageさんのISBN とバーコードというページを参考にさせていただきました♪

