biblys/isbn

一个用于转换和验证ISBN的PHP库

3.0.0 2022-11-26 00:00 UTC

README

tests Latest Stable Version Total Downloads License Gitpod ready-to-code

biblys/isbn 可以用来

  • 验证 字符串是否符合ISBN-10、ISBN-13和EAN-13格式
  • 转换 ISBN到ISBN-10、ISBN-13、EAN-13、GTIN-14和ISBN-A/DOI格式
  • 解析 ISBN以提取注册机构、出版社代码、出版代码、校验码等。

变更日志

安装

  • 要求:PHP 7.2或更高版本

使用composer安装

composer require biblys/isbn:~3.0

使用方法

转换

用例:将EAN(9782843449499)转换为ISBN-13(978-2-84344-949-9)。

<?php

use Biblys\Isbn\Isbn;

try {
    $input = "9782843449499";
    $isbn13 = Isbn::convertToIsbn13($input);
    echo "ISBN-13: $isbn13"; // Prints ISBN-13: 978-2-84344-949-9
} catch(Exception $e) {
    echo "An error occurred while attempting to format ISBN $input: ".$e->getMessage();
}

所有格式化方法

  • Isbn::convertToIsbn10
  • Isbn::convertToIsbn13
  • Isbn::convertToEan13
  • Isbn::convertToGtin14
  • Isbn::convertToIsbnA

验证

用例:验证一个格式不正确的ISBN-13(978-2-843-44949-9,应为978-2-84344-949-9)。

<?php

use Biblys\Isbn\Isbn;

try {
    $input = "978-2-843-44949-9";
    Isbn::validateAsIsbn13($input);
    echo "ISBN $input is valid!";
} catch(Exception $e) { // Will throw because third hyphen is misplaced
    echo "ISBN $input is invalid: ".$e->getMessage();
}

所有验证方法

  • Isbn::validateAsIsbn10
  • Isbn::validateAsIsbn13
  • Isbn::validateAsEan13
  • Isbn::isParsable

了解更多关于验证ISBN的信息

解析

用例:从一个ISBN中提取出版社代码。

<?php
use Biblys\Isbn\Isbn;

$input = "9782956420132";
$isbn = Isbn::parse($input);
echo $isbn->getRegistrantElement(); // Prints "9564201"

Isbn::parse 返回一个实现以下方法的 ParsedIsbn 对象

  • ParsedIsbn->getGs1Element:: EAN产品代码
  • ParsedIsbn->getRegistrationGroupElement: 国家、地理区域或语言区域代码
  • ParsedIsbn->getRegistrantElement: 出版社(或组内的印刷商)代码
  • ParsedIsbn->getPublicationElement: 出版代码
  • ParsedIsbn->getCheckDigit: 用于验证的校验码

开发

使用Gitpod

您可以通过点击Gitpod ready-to-code来启动开发环境,并在浏览器中立即开始编写代码!

本地

如果您想设置本地开发环境,您需要

  • PHP 7.x
  • Composer
  • (可选) Docker以在不同的PHP版本上运行测试和调试

克隆此存储库并运行 composer install 以开始!

测试

使用PHPUnit运行测试

composer install
composer test

在docker容器中运行测试

composer docker:test

使用特定PHP版本在docker容器中运行测试

PHP_VERSION=7.1 composer docker:test

ISBN范围更新

国际ISBN组织(International ISBN Agency)有时会添加新的ISBN范围。每次发生这种情况时,都必须更新此库。如果需要范围更新,请在GitHub上打开一个问题。您也可以在自行更新范围后打开拉取请求,使用以下命令

composer install
composer run update-ranges

或使用docker容器

composer docker:update-ranges

变更日志

查看GitHub发布