PHP 8.2.30
Preview: Isbn.php Size: 1.51 KB
/home/byroehnu/easetack.com/vendor/fakerphp/faker/src/Faker/Calculator/Isbn.php

<?php

namespace Faker\Calculator;

/**
 * Utility class for validating ISBN-10
 */
class Isbn
{
    /**
     * @var string ISBN-10 validation pattern
     */
    public const PATTERN = '/^\d{9}[0-9X]$/';

    /**
     * ISBN-10 check digit
     *
     * @see http://en.wikipedia.org/wiki/International_Standard_Book_Number#ISBN-10_check_digits
     *
     * @param string $input ISBN without check-digit
     *
     * @throws \LengthException When wrong input length passed
     */
    public static function checksum(string $input): string
    {
        // We're calculating check digit for ISBN-10
        // so, the length of the input should be 9
        $length = 9;

        if (strlen($input) !== $length) {
            throw new \LengthException(sprintf('Input length should be equal to %d', $length));
        }

        $digits = str_split($input);
        array_walk(
            $digits,
            static function (&$digit, $position): void {
                $digit = (10 - $position) * $digit;
            },
        );
        $result = (11 - array_sum($digits) % 11) % 11;

        // 10 is replaced by X
        return ($result < 10) ? (string) $result : 'X';
    }

    /**
     * Checks whether the provided number is a valid ISBN-10 number
     *
     * @param string $isbn ISBN to check
     */
    public static function isValid(string $isbn): bool
    {
        if (!preg_match(self::PATTERN, $isbn)) {
            return false;
        }

        return self::checksum(substr($isbn, 0, -1)) === substr($isbn, -1);
    }
}

Directory Contents

Dirs: 0 × Files: 6

Name Size Perms Modified Actions
1.10 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
1.58 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
1.23 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
1.51 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
1.60 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download
1.13 KB lrw-rw-rw- 2024-11-21 13:46:39
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).