Exemple #1
0
 public function run(&$arrData, $arrConf)
 {
     if (empty($arrData) || !is_array($arrData)) {
         return false;
     }
     $arrPublicInfo = array();
     $intPageNo = intval($arrData['uiData']['queryInfo']['pageNo']);
     $intRstNum = intval($arrData['uiData']['queryInfo']['resNum']);
     $arrPublicInfo['word_enc'] = $arrData['uiData']['queryInfo']['wordEnc'];
     //query_come_from
     $arrPublicInfo['come_from'] = intval($arrData['uiData']['queryInfo']['pUrlConfig']['f']);
     $arrPublicInfo['time'] = Volatile::gettimeofday();
     //T参数
     $arrData['uiData']['queryInfo']['listTime'] = $arrPublicInfo['time']['sec'];
     $arrNewQueryInfo = CSmarty::getQueryInfo();
     $arrNewQueryInfo['listTime'] = $arrPublicInfo['time']['sec'];
     //CSmarty::setQueryInfo($arrData['uiData']['queryInfo']);
     CSmarty::setQueryInfo($arrNewQueryInfo);
     if (!empty($arrData['uiData']['asResult']['item']) && is_array($arrData['uiData']['asResult']['item'])) {
         foreach ($arrData['uiData']['asResult']['item'] as $intIndex => &$arrItem) {
             if (!in_array($arrItem['comeFrome'], array('SP', 'AS'))) {
                 continue;
             }
             $arrStrategys = array();
             $strUrl = $arrItem['offsetInfo']['urlEncoded'];
             //$arrPublicInfo['url'] = iconv('utf-8','gbk',$arrItem['offsetInfo']['url']);
             $arrPublicInfo['url'] = urldecode($strUrl);
             $arrPublicInfo['id'] = $intIndex + ($intPageNo - 1) * $intRstNum + 1;
             if (!empty($arrItem['comeFrome']) && $arrItem['comeFrome'] == 'AS') {
                 $arrStrategys = $arrItem['urls']['asUrls']['strategys'];
             } else {
                 $arrStrategys = $arrItem['strategyS'];
             }
             $arrStrategys = array_slice($arrStrategys, 0, 4);
             $arrRst = getClkEncryption($arrStrategys, $arrPublicInfo);
             //加密串
             if (!empty($arrRst['clkencryption'])) {
                 $arrItem['encryptionClick'] = trim($arrRst['clkencryption']);
             }
             //F,F1,F2,F3参数
             if (!empty($arrRst['strategyStr']) && is_array($arrRst['strategyStr'])) {
                 $arrItem['strategyStr'] = $arrRst['strategyStr'];
             }
             //Y参数
             if (!empty($arrRst['identifyStr'])) {
                 $arrItem['identifyStr'] = trim($arrRst['identifyStr']);
             }
         }
     }
     $intSearchIdentifyStr = getSeClkencryption($arrPublicInfo);
     if ($intSearchIdentifyStr !== false) {
         $arrData['uiData']['asResult']['searchIdentifyStr'] = $intSearchIdentifyStr;
     }
     return true;
 }
/**
 *
 * @param $strImgSrc unknown_type       	
 * @return boolean unknown data-src={%$ls.src%} data-b64-id={%$ls.imgkey%}>
 *         <img src={%$ls.src%}>
 *        
 */
function smarty_modifier_img_base64_render($strImgSrc)
{
    if (empty($strImgSrc)) {
        CLog::warning("fail to get img base64 src id, src null");
        return false;
    }
    $arrQueryInfo = CSmarty::getQueryInfo();
    $strPage = "";
    if (!isset($arrQueryInfo['base64']) || $arrQueryInfo['base64'] !== 'on') {
        $strPage = 'src="' . $strImgSrc . '"';
        return $strPage;
    }
    if (!isset($arrQueryInfo['base64_sids_for_plugin']) || empty($arrQueryInfo['base64_sids_for_plugin'][$strImgSrc])) {
        $strPage = 'src="' . $strImgSrc . '"';
        return $strPage;
    } else {
        $strPage = 'data-src="' . $strImgSrc . '" ' . 'data-b64-id="' . $arrQueryInfo['base64_sids_for_plugin'][$strImgSrc] . '"';
        CLog::debug("get img base64 src id OK");
        return $strPage;
    }
}
/**
 *
 * @param $strImgSrc unknown_type       	
 * @return string "data-b64-id"
 *        
 */
function smarty_modifier_img_base64_parser($strImgSrc)
{
    if (empty($strImgSrc)) {
        return '';
    }
    $arrQueryInfo = CSmarty::getQueryInfo();
    if (!isset($arrQueryInfo['base64']) || $arrQueryInfo['base64'] !== 'on') {
        return '';
    }
    if (!isset($arrQueryInfo['base64_left_exp']) || $arrQueryInfo['base64_left_exp'] !== 'on') {
        return '';
    }
    if (isset($arrQueryInfo['base64_img_sids_left']) && !empty($arrQueryInfo['base64_img_sids_left'][$strImgSrc])) {
        return $arrQueryInfo['base64_img_sids_left'][$strImgSrc];
        CLog::debug("get img base64 src id OK");
    } else {
        if (isset($arrQueryInfo['base64_img_sids']) && !empty($arrQueryInfo['base64_img_sids'][$strImgSrc])) {
            return $arrQueryInfo['base64_img_sids'][$strImgSrc];
            CLog::debug("get img base64 src id OK");
        }
    }
    return '';
}
/**
 * 通用的单条渲染插件,可渲染aladdin、result、ecom等目录下;
 * 不能渲染midpage、xml、data和baidu下的完整页面模板
 *
 * @package plugins
 * @author jiachunxin@baidu.com
 */
function smarty_modifier_common_render($data, $type, $templateName, $curr_sort = false)
{
    if ($GLOBALS['mulit_render_flag'] === 1) {
        $key = $data['multi_render_key'];
        if (empty($key)) {
            CLog::warning("empty_key!", 1);
        }
        return $key;
    }
    $logArr['smarty_modifier'] = "common_render";
    $conf = CSmarty::getConf();
    $language = $conf['language'];
    $platform = $conf['platform'];
    $logArr['template_type'] = $type;
    $logArr['template_name'] = $templateName;
    $logArr['language'] = $language;
    $logArr['platform'] = $platform;
    $logArr['StdStg'] = $data['StdStg'];
    // result目录下的模板不统计性能
    $time_start = Volatile::microtime(true) * 1000;
    if ($type != $GLOBALS['STRUCT_TEMPLATE_TYPE']) {
        $log_key = $data['StdStg'] . '_' . $templateName;
    } else {
        CSmarty::addStructTplRenderNumCount();
    }
    if (empty($type)) {
        CLog::warning("template type is empty", -1, $logArr, 1);
        return false;
    }
    if (empty($templateName)) {
        CLog::warning("template name is empty", -1, $logArr, 1);
        return false;
    }
    if (empty($data['resultData']['tplData']) || !is_array($data['resultData']['tplData'])) {
        CLog::warning("tplData is empty", -1, $logArr, 1);
        return false;
    }
    $data['resultData']['queryInfo'] = CSmarty::getQueryInfo();
    $data['resultData']['templateConfig'] = CSmarty::getTemplateConfig();
    if ($curr_sort === false) {
        $curr_sort = 0;
    } else {
        $curr_sort += 1;
    }
    $data['resultData']['extData']['curr_sort'] = $curr_sort;
    // page renderer
    $smarty = CSmarty::getInstance(array('language' => $language, 'type' => $type, 'platform' => $platform));
    if (false === $smarty) {
        $status = -1;
        $errors = CSmarty::getError();
        $errors_str = implode(";", $errors);
        $logArr[$type . '_smarty_error'] = $errors_str;
        CLog::warning("fail to get instance of smarty, type: {$type}", $status, $logArr, 1);
        return false;
    }
    // encrypt page's url
    backend_encrypt_url($data, $platform, $language, $type, $templateName);
    // render page
    $page = $smarty->do_render($data, $templateName, 1);
    if (empty($page)) {
        $status = -1;
        $errors = CSmarty::getError();
        $errors_str = implode(";", $errors);
        CLog::warning("fail to render " . $type . " page, errors[{$errors_str}],info[{$log_key}]", $status, $logArr, 1);
        return false;
    }
    $tm_cost = round(Volatile::microtime(true) * 1000 - $time_start, 2);
    // result目录下的模板不统计性能
    if ($type != $GLOBALS['STRUCT_TEMPLATE_TYPE']) {
        $GLOBALS['logArr']["aladdin_page_size_{$log_key}"] = strlen($page);
        $GLOBALS['logArr']["time_aladdin_{$log_key}"] = $tm_cost;
        $GLOBALS['time_count_temp']['time_aladdin_total'] += $tm_cost;
        $GLOBALS['time_count_temp']['render_aladdin_num']++;
    } else {
        CSmarty::addStructTplRenderTimeCount($tm_cost);
        // result模板也统计性能,合并打印
        CSmarty::recordResultTplRenderTime($tm_cost);
    }
    return $page;
}
Exemple #5
0
/**
 * do rendering
 * @param array [in|out] data
 * @param array [in|out] result
 * @param Object [in] smarty
 */
function render(&$data, &$result, $smarty, $render_header_flag = false)
{
    /**
     * init render result
     */
    $result['status'] = $GLOBALS['STATUS_CODE']['OK'];
    $result['msg'] = $GLOBALS['STATUS_MSG'][$result['status']];
    //$result['page'] = '';
    if ($render_header_flag) {
        $GLOBALS['mulit_render_flag'] = 0;
        $page = $smarty->do_render($data['uiData'], $data['uiControl']['templateName'], $data['uiControl']['templateSwitch'], $data['uiControl']['templateVersion']);
    } else {
        if ($data['uiControl']['singleItem'] == 1) {
            /**
             * tplt name from gss  data 
             */
            $templateName = $data['uiData']['asResult']['item'][0]['dispData']['strategy']['tempName'];
            /**
             * tplt name from uiCrontrol
             */
            if (empty($templateName)) {
                $templateName = $data['uiControl']['templateName'];
            }
            $data['uiData']['asResult']['item'][0]['dispData']['resultData']['queryInfo'] = CSmarty::getQueryInfo();
            $data['uiData']['asResult']['item'][0]['dispData']['resultData']['templateConfig'] = CSmarty::getTemplateConfig();
            $conf = CSmarty::getConf();
            backend_encrypt_url($data['uiData']['asResult']['item'][0]['dispData'], $conf['platform'], $conf['language'], $conf['type'], $templateName);
            $page = $smarty->do_render($data['uiData']['asResult']['item'][0]['dispData'], $templateName, $data['uiControl']['templateSwitch'], $data['uiControl']['templateVersion']);
        } else {
            //并行渲染需要的数据,预处理时顺便就分类了,避免并行渲染时需要再循环遍历一次
            $arrAlaData = array();
            $arrAsData = array();
            // HHVM直连状态下,直接关闭并行渲染
            if (!empty($_ENV['HHVM'])) {
                $GLOBALS['globalConf']['FEATURE_LIST']['MULTI_RENDER']['TURN'] = 'OFF';
            }
            #		$arrMultiRenderConf = Util::getConf('/multi_render', 'MULTI_RENDER');
            #		$bolPreRenderFeature = (Util::getConf('/feature', 'FEATURE_LIST/PREDATA/TURN') === 'ON') ? true : false;
            #		$bolMultiRenderFeature = (Util::getConf('/feature', 'FEATURE_LIST/MULTI_RENDER/TURN') === 'ON') ? true : false;
            $arrMultiRenderConf = $GLOBALS['globalConf']['MULTI_RENDER'];
            $bolPreRenderFeature = $GLOBALS['globalConf']['FEATURE_LIST']['PREDATA']['TURN'] === 'ON' ? true : false;
            $bolMultiRenderFeature = $GLOBALS['globalConf']['FEATURE_LIST']['MULTI_RENDER']['TURN'] === 'ON' ? true : false;
            //限定baidu模板
            //给FE加参数确定是否有预处理
            if ($data['uiControl']['platform'] == 'pc' && $data['uiControl']['templateName'] == 'baidu' && $bolPreRenderFeature) {
                $time_start = Volatile::microtime(true) * 1000;
                pre_render($data, $arrAlaData, $arrAsData);
                $data['uiData']['queryInfo']['multiRenderFlag'] = true;
                $GLOBALS['logArr']['time_pre_render'] = round(Volatile::microtime(true) * 1000 - $time_start, 2);
            }
            if ($bolMultiRenderFeature && $bolPreRenderFeature && $data['uiControl']['templateName'] == 'baidu' && $data['uiControl']['platform'] == 'pc' && (!empty($arrAlaData) || !empty($arrAsData))) {
                CSmarty::setQueryInfo($data['uiData']['queryInfo']);
                CSmarty::setEncKeyStr($data['uiData']['queryInfo']['encryptionKey']);
                $time_start = Volatile::microtime(true) * 1000;
                try {
                    $page = multi_render($data, $smarty, $arrAlaData, $arrAsData, $arrMultiRenderConf);
                } catch (Exception $e) {
                    $page = "";
                    if (isset($GLOBALS['multi_render_shmid'])) {
                        $shmid = $GLOBALS['multi_render_shmid'];
                        shmop_delete($shmid);
                        shmop_close($shmid);
                    }
                    CLog::warning("milti error:" . $e->getMessage());
                }
                $GLOBALS['logArr']['time_multi_render_total'] = round(Volatile::microtime(true) * 1000 - $time_start, 2);
            }
            if (empty($page)) {
                $GLOBALS['mulit_render_flag'] = 0;
                $page = $smarty->do_render($data['uiData'], $data['uiControl']['templateName'], $data['uiControl']['templateSwitch'], $data['uiControl']['templateVersion']);
            }
        }
    }
    $GLOBALS['logArr']['result_tpl_tm'] = @implode(',', CSmarty::getResultTplRenderTime());
    if ($page === false) {
        $result['page'] = '';
        $errors = CSmarty::getError();
        $errors_str = implode(";", $errors);
        $status = $GLOBALS['STATUS_CODE']['RENDER_FAIL'];
        $result['status'] = $status;
        $result['msg'] = $GLOBALS['STATUS_MSG'][$status] . ", errors[{$errors_str}]";
        CLog::warning($GLOBALS['STATUS_MSG'][$status] . ", errors[{$errors_str}]", $status);
        return $status;
    } else {
        $result['page'] .= $page;
    }
    return $GLOBALS['STATUS_CODE']['OK'];
}
/**
 *
 *
 * @file modifier.real.php
 * @package plugins
 * @author liyudong@baidu.com
 * @date 2011-11-03 10:47
 */
function smarty_modifier_aladdin_render($data, $templateName, $curr_sort = false)
{
    $time_start = Volatile::microtime(true) * 1000;
    $logArr['smarty_modifier'] = "modifier_aladdin_render";
    /**
     * render config
     */
    $conf = CSmarty::getConf();
    /**
     * template type
     * @var string 
     */
    $type = VUI_TEMPLATE_ALADDIN_TEMPLATE_TYPE;
    $language = $conf['language'];
    $platform = $conf['platform'];
    $logArr['template_type'] = $type;
    $logArr['template_name'] = $templateName;
    $logArr['language'] = $language;
    $logArr['platform'] = $platform;
    $log_key = $data['StdStg'] . '_' . $templateName;
    /**
     * template type cannot be empty
     */
    if (strlen($type) == 0) {
        CLog::warning("template type is empty", -1, $logArr, 1);
        return false;
    }
    /**
     * template name cannot be empty
     */
    if (empty($templateName)) {
        CLog::warning("template name is empty", -1, $logArr, 1);
        return false;
    }
    /**
     * aladdin's tplData 
     */
    if (empty($data['resultData']['tplData']) || !is_array($data['resultData']['tplData'])) {
        CLog::warning("tplData is empty", -1, $logArr, 1);
        return false;
    }
    /**
     * set queryInfo
     */
    $data['resultData']['queryInfo'] = CSmarty::getQueryInfo();
    /**
     * set templateConfig
     */
    $data['resultData']['templateConfig'] = CSmarty::getTemplateConfig();
    /**
     * set result current sort of result page
     */
    if ($curr_sort === false) {
        $curr_sort = 0;
    } else {
        $curr_sort += 1;
    }
    $data['resultData']['extData']['curr_sort'] = $curr_sort;
    /**
     * page renderer 
     * @var Smarty
     */
    $smarty = CSmarty::getInstance(array('language' => $language, 'type' => $type, 'platform' => $platform));
    if (false === $smarty) {
        $status = -1;
        $errors = CSmarty::getError();
        $errors_str = implode(";", $errors);
        $logArr['ala_smarty_error'] = $errors_str;
        CLog::warning("fail to get instance of smarty, type: {$type}", $status, $logArr, 1);
        return false;
    }
    /**
     * encrypt page's url
     */
    backend_encrypt_url($data, $platform, $language, $type, $templateName);
    /**
     * render aladdin's page
     */
    $page = $smarty->do_render($data, $templateName, 1);
    if ($page === false) {
        $status = -1;
        $errors = CSmarty::getError();
        $errors_str = implode(";", $errors);
        CLog::warning("fail to render aladdin's page, errors[{$errors_str}]", $status, $logArr, 1);
        return false;
    }
    if (strlen($page) == 0) {
        $status = -1;
        CLog::warning("aladdin's page is empty", $status, $logArr, 1);
        return false;
    }
    $GLOBALS['logArr']["aladdin_page_size_{$log_key}"] = strlen($page);
    $GLOBALS['logArr']["time_aladdin_{$log_key}"] = round(Volatile::microtime(true) * 1000 - $time_start, 2);
    return $page;
}
/**
 *
 *
 * @file modifier.render.php
 * @package plugins
 * @author fengfei02@baidu.com
 * @date 2012-10-29 10:47
 */
function smarty_modifier_render($data, $templateName, $curr_sort = false)
{
    $logArr['smarty_modifier'] = "modifier_render";
    /**
     * render config
     */
    $conf = CSmarty::getConf();
    /**
     * template type
     * @var string 
     */
    $type = $GLOBALS['STRUCT_TEMPLATE_TYPE'];
    $language = $conf['language'];
    $platform = $conf['platform'];
    $logArr['template_name'] = $templateName;
    $logArr['template_type'] = $type;
    $logArr['language'] = $language;
    $logArr['platform'] = $platform;
    /**
     * template type cannot be empty
     * 
     * 模板是否修改类型的目录?
     * 
     */
    if (strlen($type) == 0) {
        CLog::warning("template type is empty", -1, $logArr, 1);
        return false;
    }
    /**
     * template name cannot be empty
     */
    if (empty($templateName)) {
        CLog::warning("template name is empty", -1, $logArr, 1);
        return false;
    }
    /**
     * ac's data 
     */
    if (empty($data) || !is_array($data) || empty($data['resultData'])) {
        CLog::warning("data or resultData is empty", -1, $logArr, 1);
        return false;
    }
    /**
     * set queryInfo,这个字段在baidu的global变量和函数有用,迁移时有用
     */
    $data['resultData']['queryInfo'] = CSmarty::getQueryInfo();
    /**
     * set templateConfig,同queryInfo
     */
    $data['resultData']['templateConfig'] = CSmarty::getTemplateConfig();
    /**
     * set result current sort of result page,同queryInfo
     */
    if ($curr_sort === false) {
        $curr_sort = 0;
    } else {
        $curr_sort += 1;
    }
    $data['resultData']['extData']['curr_sort'] = $curr_sort;
    /**
     * page renderer 
     * @var Smarty
     */
    $smarty = CSmarty::getInstance(array('language' => $language, 'type' => $type, 'platform' => $platform));
    if (false === $smarty) {
        $status = -1;
        $errors = CSmarty::getError();
        $errors_str = implode(";", $errors);
        $logArr['ac_smarty_error'] = $errors_str;
        CLog::warning("fail to get instance of smarty, type: {$type}", $status, $logArr, 1);
        return false;
    }
    /**
     * render ac's page
     */
    $page = $smarty->do_render($data, $templateName, 1);
    if ($page === false) {
        $status = -1;
        $errors = CSmarty::getError();
        $errors_str = implode(";", $errors);
        //CLog::warning("fail to render ac's page, errors[$errors_str]", $status, $logArr, 1);
        CLog::warning("fail to render ac's page", $status, $logArr, 1);
        return false;
    }
    if (strlen($page) == 0) {
        $status = -1;
        CLog::warning("ac's page is empty", $status, $logArr, 1);
        return false;
    }
    return $page;
}
/**
 *
 *
 * @file modifier.highlight.php
 * @package plugins
 * @author liyudong@baidu.com
 * @date 2011-11-03 10:55
 * 
 * ======================================插件说明=====================================
 * 
 * 标题飘红
 * type=0:gss aladdin,修改type=3,在调用扩展时,会转成3
 * type=1:UI自己实现的匹配飘红
 * type=2:根据DX的标记替换飘红
 * type=3:使用DA返回的飘红词调用飘红库飘红
 * type=4:使用AC返回的飘红词调用飘红库飘红
 * 
 * 摘要飘红
 * type=5:UI自己实现的匹配飘红,在调用扩展时,会转成1
 * type=6:根据DX的标记替换飘红,在调用扩展时,会转成2
 * 
 * ======================================飘红库说明=====================================
 * Hilight_title:
 * 1、UI自己实现的匹配飘红;
 * 2、根据DX的标记替换飘红;
 * 3、使用DA返回的飘红词调用飘红库飘红;
 * 4、使用AC返回的飘红词调用飘红库飘红;
 * Hilight_abstract:
 * 1、UI自己实现的匹配飘红;
 * 2、根据DX的标记替换飘红;
 * 
 */
function smarty_modifier_highlight($string, $type = 0)
{
    // BY pengxing
    // 忽略highlight插件的效果
    return $string;
    $time_start = Volatile::microtime(true) * 1000;
    $logArr['smarty_modifier'] = "modifier_highlight";
    /**
     * hilight info
     * @var array
     */
    $hilight_info = CSmarty::getHilightInfo();
    $hilight_info['hiFixInfo']['bold_prefix'] = $GLOBALS['DISPLAY']['BOLD_PREFIX'];
    $hilight_info['hiFixInfo']['bold_postfix'] = $GLOBALS['DISPLAY']['BOLD_SUFFIX'];
    $logArr['text'] = $string;
    $logArr['type'] = $type;
    $result = false;
    $hilight_query_info = array();
    $queryInfo = CSmarty::getQueryInfo();
    $language = trim(strtolower($queryInfo['language']));
    $tempArray = explode('-', $language);
    if (strlen($queryInfo['language']) != 0) {
        if ($language == 'zh-cn' || $language == 'zh-tw') {
            $hilight_query_info['query_language'] = $language;
        } else {
            if (count($tempArray) == 2) {
                $hilight_query_info['query_language'] = $tempArray[0];
            } else {
                $hilight_query_info['query_language'] = 'zh-cn';
            }
        }
    } else {
        $hilight_query_info['query_language'] = 'zh-cn';
    }
    $hilight_query_info['query_codetype'] = empty($queryInfo['outputEncode']) ? "utf-8" : (string) $queryInfo['outputEncode'];
    $hilight_query_info['user_locale'] = empty($tempArray[1]) ? "cn" : $tempArray[1];
    switch ($type) {
        case 0:
            //hilight for aladdin's page
            $hi_word = CSmarty::getHiWord();
            if (strlen($hi_word) > 0) {
                $hilight_info['hilightInfo']['ori_hilight'] = $hi_word;
            }
            $type = 3;
        case 1:
        case 2:
        case 3:
        case 4:
            /**
             * hilight title
             */
            $logArr['hilight_type'] = 'title';
            //error_log("hiFixInfo=".var_export($hilight_info['hiFixInfo'],true)."\n", 3, '/home/work/talk.log');
            //error_log("hilightInfo=".var_export($hilight_info['hilightInfo'],true)."\n", 3, '/home/work/talk.log');
            //error_log("dynamicConfig=".var_export($hilight_info['dynamicConfig'],true)."\n", 3, '/home/work/talk.log');
            //$result = hilight_title($string, $hilight_info['hiFixInfo'],$hilight_info['hilightInfo'], $hilight_info['dynamicConfig'], $type);
            $result = hilight_title_ver2($string, $hilight_info['hiFixInfo'], $hilight_info['hilightInfo'], $hilight_info['dynamicConfig'], $type, $hilight_query_info);
            break;
        case 5:
        case 6:
            /**
             * hilight abstract
             */
            $type = $type - 4;
            $logArr['hilight_type'] = 'abstract';
            $logArr['type'] = $type;
            //$result = hilight_abstract($string, $hilight_info['hiFixInfo'],$hilight_info['hilightInfo'], $hilight_info['dynamicConfig'], $type);
            $result = hilight_abstract_ver2($string, $hilight_info['hiFixInfo'], $hilight_info['hilightInfo'], $hilight_info['dynamicConfig'], $type, $hilight_query_info);
            break;
        default:
            $type = 2;
            $logArr['type'] = $type;
            $logArr['hilight_type'] = 'title';
            //$result = hilight_title($string, $hilight_info['hiFixInfo'],$hilight_info['hilightInfo'], $hilight_info['dynamicConfig'], $type);
            $result = hilight_title_ver2($string, $hilight_info['hiFixInfo'], $hilight_info['hilightInfo'], $hilight_info['dynamicConfig'], $type, $hilight_query_info);
            break;
    }
    if (false === $result) {
        CLog::warning("fail to hilight", 0, $logArr, 1);
        return $string;
    }
    $GLOBALS['logArr']['time_highlight'] += round(Volatile::microtime(true) * 1000 - $time_start, 2);
    return $result;
}