From: Andrey Kutejko Date: Sat, 15 Jun 2013 14:09:19 +0000 (+0300) Subject: optimize isValidName X-Git-Tag: 0.5~247 X-Git-Url: https://git.andy128k.dev/?a=commitdiff_plain;h=f2452153a65d6698f65235c01a8ba294c6b08048;p=ipf.git optimize isValidName --- diff --git a/ipf/utils.php b/ipf/utils.php index 30649a6..9c0c7bb 100644 --- a/ipf/utils.php +++ b/ipf/utils.php @@ -4,15 +4,7 @@ class IPF_Utils { public static function isValidName($s, $max_length=50) { - if (!is_string($s)) - return false; - if ( (strlen($s)==0) || (strlen($s)>$max_length) ) - return false; - if ( is_numeric($s[0])) - return false; - if (!preg_match('/^[a-zA-Z0-9_]+$/', $s )) - return false; - return true; + return is_string($s) && preg_match('/^[a-zA-Z_][a-zA-Z0-9_]{0,'.($max_length-1).'}$/', $s) === 1; } public static function isEmail($value) diff --git a/t/UtilsTest.php b/t/UtilsTest.php index a91c4ff..ca2422a 100644 --- a/t/UtilsTest.php +++ b/t/UtilsTest.php @@ -7,5 +7,21 @@ class Utils_Test extends PHPUnit_Framework_TestCase $this->assertEquals('goods/thumbs/image.gif', IPF_Utils::insertDirectory('goods/image.gif', 'thumbs')); $this->assertEquals('thumbs/image.gif', IPF_Utils::insertDirectory('image.gif', 'thumbs')); } + + public function testIsValidName() + { + $this->assertFalse(IPF_Utils::isValidName(3)); + $this->assertFalse(IPF_Utils::isValidName(array())); + $this->assertFalse(IPF_Utils::isValidName((object)array())); + $this->assertFalse(IPF_Utils::isValidName('')); + $this->assertFalse(IPF_Utils::isValidName('abc', 2)); + $this->assertFalse(IPF_Utils::isValidName('4ever')); + $this->assertFalse(IPF_Utils::isValidName('+')); + $this->assertFalse(IPF_Utils::isValidName('-')); + $this->assertFalse(IPF_Utils::isValidName('not a valid name')); + $this->assertTrue(IPF_Utils::isValidName('AbstractFactoryBean')); + $this->assertTrue(IPF_Utils::isValidName('th1s_1s_a_valid_nam3')); + $this->assertTrue(IPF_Utils::isValidName('_')); + } }