public static function ubn($check)
{
if (!preg_match('/^[0-9]{8}$/', $check)) {
return false;
}
$tbNum = [1, 2, 1, 2, 1, 2, 4, 1];
$intSum = 0;
for ($i = 0; $i < 8; $i++) {
$intMultiply = $check[$i] * $tbNum[$i];
$intAddition = floor($intMultiply / 10) + $intMultiply % 10;
$intSum += $intAddition;
}
return $intSum % 10 === 0 || $intSum % 10 === 9 && $check[6] === 7;
}
/** * test the ubn method of TwValidation * * @return void */ public function testUbn() { $this->assertTrue(TwValidation::ubn('30185757')); $this->assertTrue(TwValidation::ubn('28816624')); $this->assertTrue(TwValidation::ubn('29030783')); $this->assertTrue(TwValidation::ubn('70385540')); $this->assertTrue(TwValidation::ubn('70402724')); $this->assertTrue(TwValidation::ubn('70417228')); $this->assertTrue(TwValidation::ubn('70425493')); $this->assertTrue(TwValidation::ubn('70428512')); $this->assertTrue(TwValidation::ubn('80284937')); $this->assertTrue(TwValidation::ubn('80288005')); $this->assertTrue(TwValidation::ubn('80309347')); $this->assertTrue(TwValidation::ubn('84824416')); $this->assertTrue(TwValidation::ubn('84877118')); $this->assertTrue(TwValidation::ubn('29048329')); $this->assertTrue(TwValidation::ubn('29059535')); $this->assertTrue(TwValidation::ubn('70433803')); $this->assertTrue(TwValidation::ubn('70445786')); $this->assertTrue(TwValidation::ubn('70460815')); }