diff --git a/initphp/core/controller/filter.init.php b/initphp/core/controller/filter.init.php index bbeb6fd..eb782c0 100644 --- a/initphp/core/controller/filter.init.php +++ b/initphp/core/controller/filter.init.php @@ -100,11 +100,25 @@ public static function filter_slashes(&$value) { * @return string */ public function filter_script($value) { - $value = preg_replace("/(javascript:)?on(click|load|key|mouse|error|abort|move|unload|change|dblclick|move|reset|resize|submit)/i","&111n\\2",$value); - $value = preg_replace("/(.*?)<\/script>/si","",$value); - $value = preg_replace("/(.*?)<\/iframe>/si","",$value); - $value = preg_replace ("//iesU", '', $value); - return $value; + if (is_array($value)) { + foreach ($value as $k => $v) { + $value[$k] = self::filter_script($v); + } + return $value; + } else { + $parten = array( + "/(javascript:)?on(click|load|key|mouse|error|abort|move|unload|change|dblclick|move|reset|resize|submit)/i", + "/(.*?)<\/script>/si", + "/(.*?)<\/iframe>/si", + "//isU" + ); + $replace = array("\\2", "", "", ""); + $value = preg_replace($parten, $replace, $value, -1, $count); + if ($count > 0) { + $value = self::filter_script($value); + } + return $value; + } } /**