diff --git a/include/class_templateHandling.inc b/include/class_templateHandling.inc
index 4b2084d3e7a5c74b86817fbb7fab88778ced26c6..7cc3b6a92c3483bb134e7d41e1c39ea9d57fd6dd 100644
--- a/include/class_templateHandling.inc
+++ b/include/class_templateHandling.inc
@@ -229,10 +229,12 @@ class templateHandling
       return preg_replace('/^%%/', '', $string);
     }
 
-    $vars         = array();
-    while (preg_match('/%([^%]+)%/', $string, $m, PREG_OFFSET_CAPTURE)) {
+    $offset = 0;
+    $vars   = array();
+    while (preg_match('/%([^%]+)%/', $string, $m, PREG_OFFSET_CAPTURE, $offset)) {
       $replace  = static::parseMask($m[1][0], $attrs);
       $vars[]   = array($m[0][1], strlen($m[0][0]), $replace);
+      $offset   = $m[0][1] + strlen($m[0][0]);
     }
 
     $generator = static::iteratePossibleValues($string, $vars, $escapeMethod);