发新话题
打印

关键词高亮修改【代码】

关键词高亮修改【代码】

http://iliuliang.cn/?viewmode=normal
本次解决了链接和图片坏链问题  图片模式预览: http://iliuliang.cn/?action=show&id=1 大家看图片中含有”采集器“,所以这个关键词没高亮而是直接跳过。
在global.php中添加如下的函数:
PHP代码
复制内容到剪贴板
代码:
function highlight_tag($content,$tag)   
{   
    if(preg_match('/<a.+?'.preg_quote($tag).'.+?>/i',$content)) return $content;   
    if(preg_match('/<img.+?'.preg_quote($tag).'.+?>/i',$content)) return $content;   
    if(function_exists('mb_eregi_replace'))   
    {   
        $content = mb_eregi_replace($tag,'<a href="/?action=tags&item='.urlencode($tag).'" title="'.htmlspecialchars($tag).'" style="color:#F60"><strong>'.htmlspecialchars($tag).'</strong></a>',$content);   
    }   
    else $content = str_replace($tag,'<a href="/?action=tags&item='.urlencode($tag).'" title="'.htmlspecialchars($tag).'" sytle="color:#F60"><strong>'.htmlspecialchars($tag).'</strong></a>',$content);   
    return $content;   
}   
打开index.php找到下面的代码,并添加关键词函数:
PHP代码
复制内容到剪贴板
代码:
//TAGS   
if ($article['keywords']) {   
    $articletags = $tmark = '';   
    $tagdb = explode(',', $article['keywords']);   
    $tagnum = count($tagdb);   
    for($i=0; $i<$tagnum; $i++) {   
        $tagdb[$i] = trim($tagdb[$i]);   
        $articletags .= $tmark.'<a href="./?action=tags&item='.urlencode($tagdb[$i]).'">'.htmlspecialchars($tagdb[$i]).'</a>';   
        $tmark = ', ';   
        $article['content'] = highlight_tag($article['content'],$tagdb[$i]);//这句是我添加的,就是用来高亮关键词的函数   
    }   
找到下面的这句并添加标注的代码:
PHP代码
复制内容到剪贴板
代码:
//TAGS   
        if ($article['keywords']) {   
            $tagdb = explode(',', $article['keywords']);   
            $articletags = $tmark = '';   
            for($i=0; $i<count($tagdb); $i++) {   
                $tagdb[$i] = trim($tagdb[$i]);   
                $articletags .= $tmark.'<a href="./?action=tags&item='.urlencode($tagdb[$i]).'">'.htmlspecialchars($tagdb[$i]).'</a>';   
                $tmark = ', ';   
                $article['content'] = highlight_tag($article['content'],$tagdb[$i]);//就添加这句   
            }
这样就可以了。上面的关键词高亮分两部分,一个是摘要模式浏览的关键词高亮,另一个是内容中的关键词高亮,如果你不需要摘要的,上面的那个可以不加,这两个其实代码是一样的,只是顺序有些不太相同,怕各位找不到。如果找不到代码,你搜索“//TAGS”(不含引号)就能找到。
详细文章见我的blog:http://iliuliang.cn/?action=show&id=28
有问题给我留言
作者:流量为王
我的blog:http://iliuliang.cn

[ 本帖最后由 流量为王 于 2007-7-13 12:07 编辑 ]

TOP

代码拷贝过来有点乱

TOP

出来了~
字数到10

TOP

引用:
原帖由 Giki 于 2007-7-13 15:15 发表
出来了~
字数到10
?????

TOP

修正下这个图片和链接的验证函数,这样更准确:
复制内容到剪贴板
代码:

$tag = trim($tag);
if(preg_match('/<a[^>]+?'.preg_quote($tag).'[^>]+?>/i',$content)) return $content;
if(preg_match('/<img[^>]+?'.preg_quote($tag).'[^>]+?>/i',$content)) return $content;

TOP

还有个小问题,英文字幕大小写的问题,英文tag都会自动转成小写,所以文章如果是大写的,高亮后就变成小写了,特别是这样的情况 TAGS 高亮 tag 就变成了 tagS

TOP

引用:
原帖由 moufer 于 2007-7-17 09:40 发表
还有个小问题,英文字幕大小写的问题,英文tag都会自动转成小写,所以文章如果是大写的,高亮后就变成小写了,特别是这样的情况 TAGS 高亮 tag 就变成了 tagS
这个是因为设置了不区分大小写。如果你想区分大小写只要吧mb_eregi_replace 改成mb_ereg_replace就可以了。我不想用正则是因为怕有些中文被替换后会出现乱码。

TOP

不错呢
谢谢了

TOP

用了后问题太多了哈哈,汗

TOP

很喜欢,但,我网站大多是代码,
什么DIV XHTML CSS这些都会用上,所以搞得正个页面乱乱的,
要是只有文字的话是正常很不错

TOP

找了个办法,       
if(preg_match('[html]',$content)) return $content;

TOP

非常感谢楼主的分享精神

提个小毛病,使用此插件后无法通过http://validator.w3.org/的验证,

不过瑕不掩瑜,楼主非常棒

TOP

发新话题