/**
 * 处理模板字符串,并返回编译后内容
 * @param string $string
 * @param string $cache_key
 * @param array $args
 * @return string
 */
function tplString($string, $cache_key, &$args = array())
{
    global $_FANWE;
    if (!empty($args)) {
        foreach ($args as $key => $val) {
            ${$key} =& $args[$key];
        }
    }
    if (empty($cache_key)) {
        $cache_key = md5($string);
    }
    $cache_file = PUBLIC_ROOT . './data/tpl/caches/' . $cache_key . '.htm';
    if (!file_exists($cache_file)) {
        if (makeDir(preg_replace("/^(.*)\\/.*?\\.htm\$/is", "\\1", $cache_file))) {
            require_once fimport('class/template');
            $template = new Template();
            $string = $template->parseString($string);
            writeFile($cache_file, $string);
        }
    }
    ob_start();
    include $cache_file;
    $content = ob_get_contents();
    ob_end_clean();
    require_once fimport('dynamic/common');
    $module_dynamic = '';
    if (defined('MODULE_NAME') && MODULE_NAME != '') {
        $module_dynamic = fimport('dynamic/' . MODULE_NAME);
    }
    if (!empty($module_dynamic) && file_exists($module_dynamic)) {
        require_once $module_dynamic;
    }
    $content = preg_replace('/<!--dynamic\\s+(.+?)(?:|\\sargs=(.*?))-->/ies', "\\1('\\2');", $content);
    //格式化会员关注
    express($content);
    formatUserFollowTags($content);
    contentParse($content);
    return $content;
}