| @@ -12,7 +12,6 @@ if (!defined('DEDEINC')) exit("Request Error!"); | |||
| require_once(DEDEINC . "/typelink.class.php"); | |||
| require_once(DEDEINC . "/channelunit.class.php"); | |||
| require_once(DEDEINC . "/downmix.inc.php"); | |||
| @set_time_limit(0); | |||
| /** | |||
| * 主文档类(Archives类) | |||
| @@ -42,7 +41,6 @@ class Archives | |||
| var $PreNext; | |||
| var $addTableRow; | |||
| var $remoteDir; | |||
| /** | |||
| * php5构造函数 | |||
| * | |||
| @@ -56,7 +54,6 @@ class Archives | |||
| $this->IsError = FALSE; | |||
| $this->ArcID = $aid; | |||
| $this->PreNext = array(); | |||
| $this->dsql = $dsql; | |||
| $query = "SELECT channel,typeid FROM `#@__arctiny` WHERE id='$aid' "; | |||
| $arr = $this->dsql->GetOne($query); | |||
| @@ -67,12 +64,12 @@ class Archives | |||
| $this->ChannelUnit = new ChannelUnit($arr['channel'], $aid); | |||
| $this->TypeLink = new TypeLink($arr['typeid']); | |||
| if ($this->ChannelUnit->ChannelInfos['issystem'] != -1) { | |||
| // 如果当前文档不是系统模型,为单表模型 | |||
| // 如果当前文档不是系统模型,为单表模型 | |||
| $query = "SELECT arc.*,tp.reid,tp.typedir,ch.addtable | |||
| FROM `#@__archives` arc | |||
| LEFT JOIN #@__arctype tp on tp.id=arc.typeid | |||
| LEFT JOIN #@__channeltype as ch on arc.channel = ch.id | |||
| WHERE arc.id='$aid' "; | |||
| FROM `#@__archives` arc | |||
| LEFT JOIN #@__arctype tp on tp.id=arc.typeid | |||
| LEFT JOIN #@__channeltype as ch on arc.channel = ch.id | |||
| WHERE arc.id='$aid' "; | |||
| $this->Fields = $this->dsql->GetOne($query); | |||
| } else { | |||
| $this->Fields['title'] = ''; | |||
| @@ -81,11 +78,9 @@ class Archives | |||
| $this->Fields['ismake'] = 1; | |||
| $this->Fields['filename'] = ''; | |||
| } | |||
| if ($this->TypeLink->TypeInfos['corank'] > 0 && $this->Fields['arcrank'] == 0) { | |||
| $this->Fields['arcrank'] = $this->TypeLink->TypeInfos['corank']; | |||
| } | |||
| $this->Fields['tags'] = GetTags($aid); | |||
| $this->dtp = new DedeTagParse(); | |||
| $this->dtp->SetRefObj($this); | |||
| @@ -102,24 +97,20 @@ class Archives | |||
| } else { | |||
| $this->NowPage = $GLOBALS['pageno']; | |||
| } | |||
| //特殊的字段数据处理 | |||
| $this->Fields['aid'] = $aid; | |||
| $this->Fields['id'] = $aid; | |||
| $this->Fields['position'] = $this->TypeLink->GetPositionLink(TRUE); | |||
| $this->Fields['typeid'] = $arr['typeid']; | |||
| //设置一些全局参数的值 | |||
| foreach ($GLOBALS['PubFields'] as $k => $v) { | |||
| $this->Fields[$k] = $v; | |||
| } | |||
| //为了减少重复查询,这里直接把附加表查询记录放在 $this->addTableRow 中,在 ParAddTable() 不再查询 | |||
| if ($this->ChannelUnit->ChannelInfos['addtable'] != '') { | |||
| $query = "SELECT * FROM `{$this->ChannelUnit->ChannelInfos['addtable']}` WHERE `aid` = '$aid'"; | |||
| $this->addTableRow = $this->dsql->GetOne($query); | |||
| } | |||
| //issystem==-1 表示单表模型,单表模型不支持redirecturl这类参数,因此限定内容普通模型才进行下面查询 | |||
| if ($this->ChannelUnit->ChannelInfos['addtable'] != '' && $this->ChannelUnit->ChannelInfos['issystem'] != -1) { | |||
| if (is_array($this->addTableRow)) { | |||
| @@ -135,13 +126,11 @@ class Archives | |||
| } | |||
| } //!error | |||
| } | |||
| //php4构造函数 | |||
| function Archives($aid) | |||
| { | |||
| $this->__construct($aid); | |||
| } | |||
| /** | |||
| * 解析附加表的内容 | |||
| * | |||
| @@ -162,7 +151,6 @@ class Archives | |||
| $this->Fields['money'] = 0; | |||
| $this->Fields['filename'] = ''; | |||
| } | |||
| if (is_array($row)) { | |||
| foreach ($row as $k => $v) $row[strtolower($k)] = $v; | |||
| } | |||
| @@ -204,10 +192,19 @@ class Archives | |||
| //设置全局环境变量 | |||
| $this->Fields['typename'] = $this->TypeLink->TypeInfos['typename']; | |||
| @SetSysEnv($this->Fields['typeid'], $this->Fields['typename'], $this->Fields['id'], $this->Fields['title'], 'archives'); | |||
| //文章的图片注释替换为标题 | |||
| $this->Fields['body'] = str_ireplace(array('alt=""','alt=\'\''),'',$this->Fields['body']); | |||
| $this->Fields['body'] = preg_replace("@ [\s]{0,}alt[\s]{0,}=[\"'\s]{0,}[\s\S]{0,}[\"'\s] @isU"," ",$this->Fields['body']); | |||
| $this->Fields['body'] = str_ireplace("<img","<img alt=\"".$this->Fields['title']."\" title=\"".$this->Fields['title']."\" style=\"margin:20px 0;box-shadow:0 1px 2px rgba(0,0,0,.1)\"",$this->Fields['body']); | |||
| //图集的图片注释替换为标题 | |||
| $this->Fields['imgurls'] = str_ireplace(array('alt=""','alt=\'\''),'',$this->Fields['imgurls']); | |||
| $this->Fields['imgurls'] = preg_replace("@ [\s]{0,}alt[\s]{0,}=[\"'\s]{0,}[\s\S]{0,}[\"'\s] @isU"," ",$this->Fields['imgurls']); | |||
| $this->Fields['imgurls'] = str_ireplace("<img","<img alt=\"".$this->Fields['title']."\" title=\"".$this->Fields['title']."\" ",$this->Fields['imgurls']); | |||
| //去掉文章图片的宽度和高度 | |||
| $this->Fields['body'] = preg_replace("/style=\"width\:(.*)\"/","",$this->Fields['body']); | |||
| } | |||
| //完成附加表信息读取 | |||
| unset($row); | |||
| //处理要分页显示的字段 | |||
| $this->SplitTitles = array(); | |||
| if ($this->SplitPageField != '' && $GLOBALS['cfg_arcsptitle'] = 'Y' | |||
| @@ -235,7 +232,6 @@ class Archives | |||
| $this->TotalPage = count($this->SplitFields); | |||
| $this->Fields['totalpage'] = $this->TotalPage; | |||
| } | |||
| //处理默认缩略图等 | |||
| if (isset($this->Fields['litpic'])) { | |||
| if ($this->Fields['litpic'] == '-' || $this->Fields['litpic'] == '') { | |||
| @@ -245,7 +241,6 @@ class Archives | |||
| $this->Fields['litpic'] = $GLOBALS['cfg_mainsite'] . $this->Fields['litpic']; | |||
| } | |||
| $this->Fields['picname'] = $this->Fields['litpic']; | |||
| //模板里直接使用{dede:field name='image'/}获取缩略图 | |||
| $this->Fields['image'] = (!preg_match('/jpg|gif|png/i', $this->Fields['picname']) ? '' : "<img src='{$this->Fields['picname']}' />"); | |||
| } | |||
| @@ -258,7 +253,6 @@ class Archives | |||
| $this->Fields['vote'] = "<script language='javascript' src='{$GLOBALS['cfg_mainsite']}/data/vote/vote_{$voteid}.js'></script>"; | |||
| } | |||
| } | |||
| if (isset($this->Fields['goodpost']) && isset($this->Fields['badpost'])) { | |||
| //digg | |||
| if ($this->Fields['goodpost'] + $this->Fields['badpost'] == 0) { | |||
| @@ -269,7 +263,6 @@ class Archives | |||
| } | |||
| } | |||
| } | |||
| //获得当前字段参数 | |||
| function GetCurTag($fieldname) | |||
| { | |||
| @@ -285,7 +278,6 @@ class Archives | |||
| } | |||
| return ''; | |||
| } | |||
| /** | |||
| * 生成静态HTML | |||
| * | |||
| @@ -311,7 +303,6 @@ class Archives | |||
| $this->Fields['ismake'] = empty($this->Fields['ismake']) ? 0 : $this->Fields['ismake']; | |||
| $this->Fields['money'] = empty($this->Fields['money']) ? 0 : $this->Fields['money']; | |||
| $this->Fields['filename'] = empty($this->Fields['filename']) ? '' : $this->Fields['filename']; | |||
| //分析要创建的文件名称 | |||
| $filename = GetFileNewName( | |||
| $this->ArcID, | |||
| @@ -325,7 +316,6 @@ class Archives | |||
| $this->Fields['money'], | |||
| $this->Fields['filename'] | |||
| ); | |||
| $filenames = explode(".", $filename); | |||
| $this->ShortName = $filenames[count($filenames) - 1]; | |||
| if ($this->ShortName == '') $this->ShortName = 'html'; | |||
| @@ -336,7 +326,6 @@ class Archives | |||
| if ($this->NameFirst == '') { | |||
| $this->NameFirst = $this->arcID; | |||
| } | |||
| //获得当前文档的全名 | |||
| $filenameFull = GetFileUrl( | |||
| $this->ArcID, | |||
| @@ -354,12 +343,9 @@ class Archives | |||
| $this->TypeLink->TypeInfos['sitepath'] | |||
| ); | |||
| $this->Fields['arcurl'] = $this->Fields['fullname'] = $filenameFull; | |||
| //对于已设置不生成HTML的文章直接返回网址 | |||
| if ( | |||
| $this->Fields['ismake'] == -1 || $this->Fields['arcrank'] != 0 || $this->Fields['money'] > 0 | |||
| || ($this->Fields['typeid'] == 0 && $this->Fields['channel'] != -1) | |||
| ) { | |||
| $this->Fields['ismake'] == -1 || $this->Fields['arcrank'] != 0 || $this->Fields['money'] > 0 || ($this->Fields['typeid'] == 0 && $this->Fields['channel'] != -1)) { | |||
| return $this->GetTrueUrl($filename); | |||
| } | |||
| //循环生成HTML文件 | |||
| @@ -385,7 +371,6 @@ class Archives | |||
| $this->dsql->ExecuteNoneQuery("Update `#@__archives` SET ismake=1 WHERE id='" . $this->ArcID . "'"); | |||
| return $this->GetTrueUrl($filename); | |||
| } | |||
| /** | |||
| * 获得真实连接路径 | |||
| * | |||
| @@ -411,7 +396,6 @@ class Archives | |||
| $this->TypeLink->TypeInfos['sitepath'] | |||
| ); | |||
| } | |||
| /** | |||
| * 获得站点的真实根路径 | |||
| * | |||
| @@ -423,7 +407,6 @@ class Archives | |||
| $TRUEpath = $GLOBALS["cfg_basedir"]; | |||
| return $TRUEpath; | |||
| } | |||
| /** | |||
| * 获得指定键值的字段 | |||
| * | |||
| @@ -454,7 +437,6 @@ class Archives | |||
| } | |||
| return ''; | |||
| } | |||
| /** | |||
| * 获得模板文件位置 | |||
| * | |||
| @@ -494,7 +476,6 @@ class Archives | |||
| if (!preg_match("#.htm$#", $tmpfile)) return FALSE; | |||
| return $tmpfile; | |||
| } | |||
| /** | |||
| * 动态输出结果 | |||
| * | |||
| @@ -512,16 +493,14 @@ class Archives | |||
| //预编译 | |||
| $this->LoadTemplet(); | |||
| $this->ParAddTable(); | |||
| $this->ParseTempletsFirst(); | |||
| //跳转网址 | |||
| $this->Fields['flag'] = empty($this->Fields['flag']) ? "" : $this->Fields['flag']; | |||
| if (preg_match("#j#", $this->Fields['flag']) && $this->Fields['redirecturl'] != '') { | |||
| if ($GLOBALS['cfg_jump_once'] == 'N') { | |||
| $pageHtml = "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=" . $GLOBALS['cfg_soft_lang'] . "\">\r\n<title>" . $this->Fields['title'] . "</title>\r\n"; | |||
| $pageHtml .= "<meta http-equiv=\"refresh\" content=\"3;URL=" . $this->Fields['redirecturl'] . "\">\r\n</head>\r\n<body>\r\n"; | |||
| $pageHtml .= "现在正在转向:" . $this->Fields['title'] . ",请稍候...<br/><br/>\r\n转向内容简介:" . $this->Fields['description'] . "\r\n</body>\r\n</html>\r\n"; | |||
| $pageHtml .= "现在正在转向:" . $this->Fields['title'] . ",请稍候...<br/><br/>\r\n转向内容简介:" . $this->Fields['description'] . "\r\n</body>\r\n</html>\r\n"; | |||
| echo $pageHtml; | |||
| } else { | |||
| header("location:{$this->Fields['redirecturl']}"); | |||
| @@ -532,7 +511,6 @@ class Archives | |||
| $this->ParseDMFields($pageCount, 0); | |||
| $this->dtp->display(); | |||
| } | |||
| /** | |||
| * 载入模板 | |||
| * | |||
| @@ -554,7 +532,6 @@ class Archives | |||
| $this->dtp->LoadSource($this->TempSource); | |||
| } | |||
| } | |||
| /** | |||
| * 解析模板,对固定的标记进行初始给值 | |||
| * | |||
| @@ -566,36 +543,25 @@ class Archives | |||
| if (empty($this->Fields['keywords'])) { | |||
| $this->Fields['keywords'] = ''; | |||
| } | |||
| if (empty($this->Fields['reid'])) { | |||
| $this->Fields['reid'] = 0; | |||
| } | |||
| $GLOBALS['envs']['tags'] = $this->Fields['tags']; | |||
| if (isset($this->TypeLink->TypeInfos['reid'])) { | |||
| $GLOBALS['envs']['reid'] = $this->TypeLink->TypeInfos['reid']; | |||
| } | |||
| $GLOBALS['envs']['keyword'] = $this->Fields['keywords']; | |||
| $GLOBALS['envs']['typeid'] = $this->Fields['typeid']; | |||
| $GLOBALS['envs']['topid'] = GetTopid($this->Fields['typeid']); | |||
| $GLOBALS['envs']['aid'] = $GLOBALS['envs']['id'] = $this->Fields['id']; | |||
| $GLOBALS['envs']['adminid'] = $GLOBALS['envs']['mid'] = isset($this->Fields['mid']) ? $this->Fields['mid'] : 1; | |||
| $GLOBALS['envs']['channelid'] = $this->TypeLink->TypeInfos['channeltype']; | |||
| if ($this->Fields['reid'] > 0) { | |||
| $GLOBALS['envs']['typeid'] = $this->Fields['reid']; | |||
| } | |||
| MakeOneTag($this->dtp, $this, 'N'); | |||
| } | |||
| /** | |||
| * 解析模板,对内容里的变动进行赋值 | |||
| * | |||
| @@ -612,7 +578,6 @@ class Archives | |||
| $this->Fields[$this->SplitPageField] = $this->SplitFields[$pageNo - 1]; | |||
| if ($pageNo > 1) $this->Fields['description'] = trim(preg_replace("/[\r\n\t]/", ' ', cn_substr(html2text($this->Fields[$this->SplitPageField]), 200))); | |||
| } | |||
| //解析模板 | |||
| if (is_array($this->dtp->CTags)) { | |||
| foreach ($this->dtp->CTags as $i => $ctag) { | |||
| @@ -632,7 +597,34 @@ class Archives | |||
| } | |||
| } else if ($ctag->GetName() == 'prenext') { | |||
| $this->dtp->Assign($i, $this->GetPreNext($ctag->GetAtt('get'))); | |||
| } else if ($ctag->GetName() == 'fieldlist') { | |||
| } | |||
| //二次开发上一篇下一篇{dede:prenextdiy get='pre'}{/dede:prenextdiy}{dede:prenextdiy get='next'}{/dede:prenextdiy} | |||
| else if($ctag->GetName()=='prenextdiy') | |||
| { | |||
| $innertext = trim($ctag->GetInnerText()); | |||
| if($innertext) | |||
| { | |||
| $get = $ctag->GetAtt('get'); | |||
| $diys['diy'] = $this->GetPreNext('diy'); | |||
| $revalue = ''; | |||
| $dtp2 = new DedeTagParse(); | |||
| $dtp2->SetNameSpace('field','[',']'); | |||
| $dtp2->LoadSource($innertext); | |||
| foreach($diys as $row) | |||
| { | |||
| foreach($dtp2->CTags as $tid=>$ctag2) | |||
| { | |||
| if(isset($row[$get][$ctag2->GetName()])) | |||
| { | |||
| $dtp2->Assign($tid,$row[$get][$ctag2->GetName()]); | |||
| } | |||
| } | |||
| $revalue .= $dtp2->GetResult(); | |||
| } | |||
| if($row[$get]['id']) $this->dtp->Assign($i,$revalue); | |||
| } | |||
| } | |||
| else if ($ctag->GetName() == 'fieldlist') { | |||
| $innertext = trim($ctag->GetInnerText()); | |||
| if ($innertext == '') $innertext = GetSysTemplets('tag_fieldlist.htm'); | |||
| $dtp2 = new DedeTagParse(); | |||
| @@ -666,12 +658,10 @@ class Archives | |||
| } | |||
| $this->dtp->Assign($i, $res); | |||
| } //end case | |||
| } //结束模板循环 | |||
| } | |||
| } | |||
| /** | |||
| * 关闭所占用的资源 | |||
| * | |||
| @@ -683,7 +673,6 @@ class Archives | |||
| $this->FixedValues = ''; | |||
| $this->Fields = ''; | |||
| } | |||
| /** | |||
| * 获取上一篇,下一篇链接 | |||
| * | |||
| @@ -702,8 +691,8 @@ class Archives | |||
| $next = (is_array($nextR) ? " where arc.id={$nextR['id']} " : ' where 1>2 '); | |||
| $pre = (is_array($preR) ? " where arc.id={$preR['id']} " : ' where 1>2 '); | |||
| $query = "Select arc.id,arc.title,arc.shorttitle,arc.typeid,arc.ismake,arc.senddate,arc.arcrank,arc.money,arc.filename,arc.litpic, | |||
| t.typedir,t.typename,t.namerule,t.namerule2,t.ispart,t.moresite,t.siteurl,t.sitepath | |||
| from `#@__archives` arc left join #@__arctype t on arc.typeid=t.id "; | |||
| t.typedir,t.typename,t.namerule,t.namerule2,t.ispart,t.moresite,t.siteurl,t.sitepath | |||
| from `#@__archives` arc left join #@__arctype t on arc.typeid=t.id "; | |||
| $nextRow = $this->dsql->GetOne($query . $next); | |||
| $preRow = $this->dsql->GetOne($query . $pre); | |||
| if (is_array($preRow)) { | |||
| @@ -726,7 +715,13 @@ class Archives | |||
| $preRow['sitepath'] | |||
| ); | |||
| } | |||
| //二次开发上一篇属性 | |||
| $preRow['litpic'] = (empty($preRow['litpic'])) ? $GLOBALS['cfg_cmspath'].'/images/defaultpic.jpg' : $preRow['litpic']; | |||
| $this->PreNext['diy']['pre']['id'] = $preRow['id']; | |||
| $this->PreNext['diy']['pre']['arcurl'] = $mlink; | |||
| $this->PreNext['diy']['pre']['title'] = $preRow['title']; | |||
| $this->PreNext['diy']['pre']['litpic'] = $preRow['litpic']; | |||
| $this->PreNext['diy']['pre']['pubdate'] = $preRow['senddate']; | |||
| $this->PreNext['pre'] = "上一篇:<a href='$mlink'>{$preRow['title']}</a> "; | |||
| $this->PreNext['preimg'] = "<a href='$mlink'><img src=\"{$preRow['litpic']}\" alt=\"{$preRow['title']}\"/></a> "; | |||
| } else { | |||
| @@ -753,7 +748,13 @@ class Archives | |||
| $nextRow['sitepath'] | |||
| ); | |||
| } | |||
| //二次开发下一篇属性 | |||
| $nextRow['litpic'] = (empty($nextRow['litpic'])) ? $GLOBALS['cfg_cmspath'].'/images/defaultpic.jpg' : $nextRow['litpic']; | |||
| $this->PreNext['diy']['next']['id'] = $nextRow['id']; | |||
| $this->PreNext['diy']['next']['arcurl'] = $mlink; | |||
| $this->PreNext['diy']['next']['title'] = $nextRow['title']; | |||
| $this->PreNext['diy']['next']['litpic'] = $nextRow['litpic']; | |||
| $this->PreNext['diy']['next']['pubdate'] = $nextRow['senddate']; | |||
| $this->PreNext['next'] = "下一篇:<a href='$mlink'>{$nextRow['title']}</a> "; | |||
| $this->PreNext['nextimg'] = "<a href='$mlink'><img src=\"{$nextRow['litpic']}\" alt=\"{$nextRow['title']}\"/></a> "; | |||
| } else { | |||
| @@ -761,22 +762,25 @@ class Archives | |||
| $this->PreNext['nextimg'] = "<a href='javascript:void(0)' alt=\"\"><img src=\"/templets/default/images/nophoto.jpg\" alt=\"对不起,没有下一图集了!\"/></a>"; | |||
| } | |||
| } | |||
| if ($gtype == 'pre') { | |||
| //二次开发上一篇下一篇 | |||
| if($gtype=='diy') | |||
| { | |||
| return $this->PreNext['diy']; | |||
| } | |||
| if($gtype=='pre') | |||
| { | |||
| $rs = $this->PreNext['pre']; | |||
| } else if ($gtype == 'preimg') { | |||
| $rs = $this->PreNext['preimg']; | |||
| } else if ($gtype == 'next') { | |||
| $rs = $this->PreNext['next']; | |||
| } else if ($gtype == 'nextimg') { | |||
| $rs = $this->PreNext['nextimg']; | |||
| } else { | |||
| $rs = $this->PreNext['pre'] . " " . $this->PreNext['next']; | |||
| } | |||
| return $rs; | |||
| } | |||
| /** | |||
| * 获得动态页面分页列表 | |||
| * | |||
| @@ -845,7 +849,6 @@ class Archives | |||
| } | |||
| return $PageList; | |||
| } | |||
| /** | |||
| * 获得静态页面分页列表 | |||
| * | |||
| @@ -895,7 +898,6 @@ class Archives | |||
| } | |||
| return $PageList; | |||
| } | |||
| /** | |||
| * 获得动态页面小标题 | |||
| * | |||
| @@ -946,7 +948,6 @@ class Archives | |||
| } | |||
| return $revalue; | |||
| } | |||
| /** | |||
| * 获得静态页面小标题 | |||
| * | |||
| @@ -996,7 +997,6 @@ class Archives | |||
| } | |||
| return $revalue; | |||
| } | |||
| /** | |||
| * 高亮问题修正, 排除alt title <a></a>直接的字符替换 | |||
| * | |||
| @@ -1011,10 +1011,8 @@ class Archives | |||
| $kws = explode(",", trim($kw)); //以分好为间隔符 | |||
| $i = 0; | |||
| $karr = $kaarr = $GLOBALS['replaced'] = array(); | |||
| //暂时屏蔽超链接 | |||
| $body = preg_replace("#(<a(.*))(>)(.*)(<)(\/a>)#isU", '\\1-]-\\4-[-\\6', $body); | |||
| /* | |||
| foreach($kws as $k) | |||
| { | |||
| @@ -1045,30 +1043,45 @@ class Archives | |||
| $karr[] = $key; | |||
| $kaarr[] = "<a href='$key_url' target='_blank'><u>$key</u></a>"; | |||
| } | |||
| $GLOBALS['_dd_karr'] = $karr; | |||
| $GLOBALS['_dd_kaarr'] = $kaarr; | |||
| // 这里可能会有错误 | |||
| if (version_compare(PHP_VERSION, '8.0.0', '>=')) { | |||
| $body = @preg_replace_callback("#(^|>)([^<]+)(?=<|$)#sU", "_highlight8", $body); | |||
| } else if (version_compare(PHP_VERSION, '5.5.0', '>=')) { | |||
| $body = @preg_replace_callback("#(^|>)([^<]+)(?=<|$)#sU", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body); | |||
| if (version_compare(PHP_VERSION, '5.5.0', '>=')) | |||
| { | |||
| //$body = @preg_replace_callback("#(^|>)([^<]+)(?=<|$)#sU", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body); | |||
| if($cfg_replace_num > 0) | |||
| { | |||
| $query = "SELECT * FROM #@__keywords WHERE rpurl<>'' ORDER BY rank DESC"; | |||
| $this->dsql->SetQuery($query); | |||
| $this->dsql->Execute(); | |||
| while($row = $this->dsql->GetArray()) | |||
| { | |||
| $key = trim($row['keyword']); | |||
| $key_url=trim($row['rpurl']); | |||
| $body = str_replace_limit($key, "<a href='$key_url' target='_blank'><u>$key</u></a>", $body, $cfg_replace_num); | |||
| } | |||
| } else { | |||
| $query = "SELECT * FROM #@__keywords WHERE rpurl<>'' ORDER BY rank DESC"; | |||
| $this->dsql->SetQuery($query); | |||
| $this->dsql->Execute(); | |||
| while($row = $this->dsql->GetArray()) | |||
| { | |||
| $key = trim($row['keyword']); | |||
| $key_url=trim($row['rpurl']); | |||
| $body = str_replace($key, "<a href='$key_url' target='_blank'>$key</a>", $body); | |||
| } | |||
| } | |||
| } else { | |||
| $body = @preg_replace("#(^|>)([^<]+)(?=<|$)#sUe", "_highlight('\\2', \$karr, \$kaarr, '\\1')", $body); | |||
| } | |||
| //恢复超链接 | |||
| $body = preg_replace("#(<a(.*))-\]-(.*)-\[-(\/a>)#isU", '\\1>\\3<\\4', $body); | |||
| return $body; | |||
| } | |||
| } //End Archives | |||
| }//End Archives | |||
| function _highlight8($matches){ | |||
| return _highlight($matches[2], $GLOBALS['_dd_karr'], $GLOBALS['_dd_kaarr'], $matches[1]); | |||
| } | |||
| //高亮专用, 替换多次是可能不能达到最多次 | |||
| function _highlight($string, $words, $result, $pre) | |||
| { | |||
| @@ -1092,4 +1105,4 @@ function _highlight($string, $words, $result, $pre) | |||
| $string = str_replace($words, $result, $string); | |||
| } | |||
| return $pre . $string; | |||
| } | |||
| } | |||