続々 ISBNコードの10桁13桁やハイフン有り無しの話
続き物のつもりはないのですが、javascriptの関数も用意したので公開いたします。
前回前々回でも書いていますが、ISBNコードはハイフンを含んだコード体系です。ですので、13桁ハイフン有りが正解です。強制力はありませんが、なるべくなら13桁ハイフン有りが普及するよう願っております。
しかし、あちこちサイトを見て回っても、13桁ハイフン無しの表示はけっこう多い。初回では、10桁13桁ハイフン有り無しを13桁ハイフン有りに変換するPHPの関数を紹介しました。ですが、PHPだと環境によっては使えないことも多いかも知れません。
ということで、今回は、PHPが使えない環境でも使えるjavascriptの関数を用意いたしました。javascriptは環境を構築せずとも使えるスクリプト言語です。それほど複雑な処理ではないので詳しい説明は省きますが、PHPが動かせない環境でもお使いいただけるのではないかと思います。
/* ISBN13桁ハイフン無し→ISBN13桁ハイフン有りへの変換を行うjavascript関数 */
function isbn_hyphenate( isbn ) {
/* 与えられた13桁ハイフン無し(数値のみ)のISBNを文字列に型変換 */
var isbn13 = String(isbn);
/* 9784に続く出版社記号の先頭2桁の文字列を抽出 */
var registrant02 = isbn13.slice(4,6)
/* 抽出した文字列を桁数判定用として数値に変換 */
var regi02 = Number(registrant02);
/* 以下、出版社記号の桁数に応じた場合分け */
if( regi02 < 20 ){
isbn = "978-4-" + isbn13.slice(4,6) + "-" + isbn13.slice(6,12) + "-" + isbn13.slice(12,13);
}else if( regi02 < 70 ){
isbn = "978-4-" + isbn13.slice(4,7) + "-" + isbn13.slice(7,12) + "-" + isbn13.slice(12,13);
}else if( regi02 < 85 ){
isbn = "978-4-" + isbn13.slice(4,8) + "-" + isbn13.slice(8,12) + "-" + isbn13.slice(12,13);
}else if( regi02 < 90 ){
isbn = "978-4-" + isbn13.slice(4,9) + "-" + isbn13.slice(9,12) + "-" + isbn13.slice(12,13);
}else if( regi02 < 95 ){
isbn = "978-4-" + isbn13.slice(4,10) + "-" + isbn13.slice(10,12) + "-" + isbn13.slice(12,13);
}else{
isbn = "978-4-" + isbn13.slice(4,11) + "-" + isbn13.slice(11,12) + "-" + isbn13.slice(12,13);
}
return isbn;
}
上記の関数を使ってHTML内にISBN13桁ハイフン有りを表示するためには、例えば以下のような記述を行います。例ではHTMLのpタグ内に置いたscriptで13桁ハイフン有りに変換したISBNを直接書き込んでいます。
<p>
<script>
document.write( isbn_hyphenate( 9784065171516 ) );
</script>
</p>
今回は、以上です
この記事が気に入ったらサポートをしてみませんか?