続々 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>

今回は、以上です

この記事が気に入ったらサポートをしてみませんか?