zoukankan      html  css  js  c++  java
  • 博客项目实现文章摘要

    前提:

           1.博客首先系统自然是基于文本编辑器的,例如本博客是采用fckeditor。而文本编辑器提交时的文本是HTML格式的,将这个HTML格式文本直接以页面一部分显示,便可以实现文章的格式。

           2.文章摘要是,截取文章中前面一小部分,用于显示在首页文章列表。点击文章链接,才可以看到文章全部。

           3.博客系统,数据库里存储的是文章路径,而文章内容是存储在服务器本地目录下。根据1可知,文章内容是HTML格式的。

    思路:

            在上述前提2的基础上,我们可以设想在HTML格式文本的基础上该如何截取文章呢?如果截取前300字,恰巧将一个HTML的标签拦腰截断岂不尴尬?

            在上述前提3的基础上,我们可以设想摘要该以怎样形式存储?

            我的思路就是,为了获取摘要,有必要先将HTML标签都剔除掉,在纯净的文字基础上去截取前面300字符(Java String的substring()方法即可)。存储的话就是同样设立一个摘要的目录,采取数据库本地读写的形式。文章实体类多加一个摘要字段,存放摘要路径。之后主页显示的是Article实体类的摘要字段(本地目录读取)即可。查看文章内容则显示Article实体类的文章内容字段(本地目录读取)即可。

           下面是除去HTML标签的公共方法(采用了复杂的正则,借鉴于网上):

        /*
         * clean all the tags of HTML
         */
        public static String removeTag(String htmlStr) {
            String regEx_script = "<script[^>]*?>[\s\S]*?<\/script>"; // script
            String regEx_style = "<style[^>]*?>[\s\S]*?<\/style>"; // style
            String regEx_html = "<[^>]+>"; // HTML tag
            String regEx_space = "\s+|	|
    |
    ";// other characters
    
            Pattern p_script = Pattern.compile(regEx_script,
                Pattern.CASE_INSENSITIVE);
            Matcher m_script = p_script.matcher(htmlStr);
            htmlStr = m_script.replaceAll("");
            Pattern p_style = Pattern
                .compile(regEx_style, Pattern.CASE_INSENSITIVE);
            Matcher m_style = p_style.matcher(htmlStr);
            htmlStr = m_style.replaceAll("");
            Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
            Matcher m_html = p_html.matcher(htmlStr);
            htmlStr = m_html.replaceAll("");
            Pattern p_space = Pattern
                .compile(regEx_space, Pattern.CASE_INSENSITIVE);
            Matcher m_space = p_space.matcher(htmlStr);
            htmlStr = m_space.replaceAll(" ");
            return htmlStr;
        }
  • 相关阅读:
    ssh实现免密码登录和文件传输
    linux后台执行程序相关命令
    orchestrator
    curl下载安装与使用
    goland使用
    mysql集群
    consul理解
    my.cnf
    数据库的表设计
    项目常见面试问题
  • 原文地址:https://www.cnblogs.com/rixiang/p/6055757.html
Copyright © 2011-2022 走看看