程序员人生 网站导航

解决phpcms关键字内联关联链接的最新方法

栏目:DedeCMS时间:2014-03-16 23:36:39

  网(LieHuo.Net)PHPCMS教程:之前有好几个朋友发布的“phpcms关键字内联关联链接”的解决方案,都不太好用。但是我用过之后还是感觉不完美,但是phpcms官方也没有解决,哪只能自己硬着头皮自己想办法解决。

  下面就是我修改的代码。

  找到include目录下的global.func.php文件,用软件打开后,搜索function keylinks

  先将function keylinks上面的

function _base64_encode($t,$str)
{
return $t.""".base64_encode($str).""";
}
function _base64_decode($t,$str)
{
return $t.""".base64_decode($str).""";
}

  去除。
  然后将
  function keylinks方法替换为我下面的方法

function keylinks($txt, $replacenum = '')
{
$search = '/<a[^>]+?>.*?</a>|<img[^>]+?>|<script[^>]+?>.*?</script>|<i?frame[^>]+?></i?frame>|<su[bp]>.*?</su[bp]>/ise';
$search1 = '/@@!@~@!@(.*?)@!@~@!@@/ise';
$replace = "'@@!@~@!@'.base64_encode('').'@!@~@!@@'";
$replace1 = "base64_decode('1')";
$txt = preg_replace($search, $replace, $txt);
$linkdatas = cache_read('keylink.php','',1);
if($linkdatas)
{
  foreach($linkdatas as $v)
  {
   $v0 = $v[0];
   $v1 = $v[1];
   $word = '/'.preg_quote($v0, '/').'(?![A-Za-z0-9+]*(?:>|={0,2}@!@~@!@@))/is';
   if($v1)
   {
    $replacement = '<a href="'.$v1.'" target="_blank" class="keylink">'.$v0.'</a>';
   }//liehuo.net
   else
   {
    $replacement = '<a href="'.SITE_URL.'tag.php?tag='.$v0.'" target="_blank" class="keylink">'.$v0.'</a>';
   }
   $txt = preg_replace($word, $replacement, $txt, 1);
   $txt = preg_replace($search, $replace, $txt);
  }
}
$txt = preg_replace($search1, $replace1, $txt);
$txt = str_replace('"', '"', $txt);
return $txt;
}

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐