Prechádzať zdrojové kódy

[ZF-8835] Zend_Validate:

- reworked ereg

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20334 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 rokov pred
rodič
commit
ed7455e6cf
1 zmenil súbory, kde vykonal 15 pridanie a 5 odobranie
  1. 15 5
      library/Zend/Validate/Isbn.php

+ 15 - 5
library/Zend/Validate/Isbn.php

@@ -102,33 +102,43 @@ class Zend_Validate_Isbn extends Zend_Validate_Abstract
         // prepare separator and pattern list
         $sep      = quotemeta($this->_separator);
         $patterns = array();
+        $lengths  = array();
 
         // check for ISBN-10
         if ($this->_type == self::ISBN10 || $this->_type == self::AUTO) {
             if (empty($sep)) {
-                $pattern = '^[0-9]{9}[0-9X]{1}$';
+                $pattern = '/^[0-9]{9}[0-9X]{1}$/';
+                $length  = 10;
             } else {
-                $pattern = "^[0-9]{1,7}[{$sep}]{1}[0-9]{1,7}[{$sep}]{1}[0-9]{1,7}[{$sep}]{1}[0-9X]{1}\${13}";
+                $pattern = "/^[0-9]{1,7}[{$sep}]{1}[0-9]{1,7}[{$sep}]{1}[0-9]{1,7}[{$sep}]{1}[0-9X]{1}$/";
+                $length  = 13;
             }
+
             $patterns[$pattern] = self::ISBN10;
+            $lengths[$pattern]  = $length;
         }
 
         // check for ISBN-13
         if ($this->_type == self::ISBN13 || $this->_type == self::AUTO) {
             if (empty($sep)) {
-                $pattern = '^[0-9]{13}$';
+                $pattern = '/^[0-9]{13}$/';
+                $length  = 13;
             } else {
-                $pattern = "^[0-9]{1,9}[{$sep}]{1}[0-9]{1,5}[{$sep}]{1}[0-9]{1,9}[{$sep}]{1}[0-9]{1,9}[{$sep}]{1}[0-9]{1}\${17}";
+                $pattern = "/^[0-9]{1,9}[{$sep}]{1}[0-9]{1,5}[{$sep}]{1}[0-9]{1,9}[{$sep}]{1}[0-9]{1,9}[{$sep}]{1}[0-9]{1}$/";
+                $length  = 17;
             }
+
             $patterns[$pattern] = self::ISBN13;
+            $lengths[$pattern]  = $length;
         }
 
         // check pattern list
         foreach ($patterns as $pattern => $type) {
-            if (ereg($pattern, $this->_value) == 1) {
+            if ((strlen($this->_value) == $lengths[$pattern]) && preg_match($pattern, $this->_value)) {
                 return $type;
             }
         }
+
         return null;
     }