public static function parse($configFile) { self::$_tmpPrefix = 0; self::$_tmpData = array(); $cacheKey = "SConfig_Cache_" . md5(realpath($configFile)); if (self::$CACHE) { if (isset(self::$_result[$cacheKey])) { return self::$_result[$cacheKey]; } $tmp_file = self::_tmpDir() . "/" . self::$_tmpPrefix . $cacheKey; if (is_file($tmp_file) && filemtime($tmp_file) >= filemtime($configFile)) { $result = unserialize(file_get_contents($tmp_file, false)); self::$_result[$cacheKey] = $result; return $result; } } $content = file_get_contents($configFile, false); //去掉注释,#号表示注释 $content = preg_replace("/^(\\s*)#(.*)/m", "", $content); //保存临时变量,单引号,双引号里特殊字符 $content = preg_replace_callback("/(\\S+?)[\\s:]+([\\'\"])(.*?)\\2;/m", array("SConfig", "_tmpData"), $content); //获取最直接的k,v值 $result = self::_getKV($content); self::_split($content, $result); if (self::$CACHE) { file_put_contents($tmp_file, serialize($result), LOCK_EX); self::$_result[$cacheKey] = $result; } return $result; }