网(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; } |