Просмотр исходного кода

Fix convertPhpToIsoFormat

Fixes bug ZF-12141
Michele Locati 11 лет назад
Родитель
Сommit
2a3b22758c
1 измененных файлов с 29 добавлено и 3 удалено
  1. 29 3
      library/Zend/Locale/Format.php

+ 29 - 3
library/Zend/Locale/Format.php

@@ -757,13 +757,39 @@ class Zend_Locale_Format
                          'P' => 'ZZZZ', 'T' => 'z'   , 'Z' => 'X'   , 'c' => 'yyyy-MM-ddTHH:mm:ssZZZZ',
                          'r' => 'r'   , 'U' => 'U');
         $values = str_split($format);
+        $escaped = false;
+        $lastescaped = false;
+        $temp = array();
         foreach ($values as $key => $value) {
-            if (isset($convert[$value]) === true) {
-                $values[$key] = $convert[$value];
+            if (!$escaped && $value == '\\') {
+                $escaped = true;
+                continue;
+            }
+            if ($escaped) {
+                if (!$lastescaped) {
+                    $temp[] = "'";
+                    $lastescaped = true;
+                }
+                $temp[] = $value;
+                $escaped = false;
+            } else {
+                if ($value == "'") {
+                    $temp[] = "''";
+                } else {
+                    if ($lastescaped) {
+                        $temp[] = "'";
+                        $lastescaped = false;
+                    }
+                    if (isset($convert[$value]) === true) {
+                        $temp[] = $convert[$value];
+                    } else {
+                        $temp[] = $value;
+                    }
+                }
             }
         }
 
-        return implode($values);
+        return join($temp);
     }
 
     /**