烈火网(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 = '/]+?\>.*?|]+?\>|
$search1 = '/@@!@~@!@(.*?)@!@~@!@@/ise';
$replace = "'@@!@~@!@'.base64_encode('\\0').'@!@~@!@@'";
$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 = ''.$v0.'';
}//veryhuo.com
else
{
$replacement = ''.$v0.'';
}
$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;
}