请问一下怎么用PHP实现以下功能:从txt中取出一个词后,与数据库进行关键字匹配,找出是否存在这个词。
其实是一个敏感字检测系统,从网络爬虫上爬到内容,提取关键字后保存为txt文件,接着就要对这个txt文件进行检测,看有没有存在非法的

解决方案 »

  1.   


    /*纪录非法关键字表的结构
    id
    key
    */$txt = file_get_contents('test.txt'); // 文章内容// 读取非法关键字表
    $sqlstr = "select * from table";
    $query = @mysql_query($sqlstr) or die(mysql_error());
    $keys = array();
    while($thread = mysql_fetch_assoc($query)){
        $keys[] = $thread['key'];
    }// 纪录文章中包含的非法关键字
    $result = array();foreach($keys as $k=>$v){
        if(strpos($txt, $key)!==false){
            array_push($result, $key);
        }
    }// 打印文章中包含的非法关键字
    print_r($result);
      

  2.   

    提取关键字后保存为txt文件,然后用该词与数据库保存的词比较
    是这个意思吗?
    如果是单个词,直接比较就是了 .... where word=’word'
    如果是多个词,那就用逗号连接成串 .... where find_in_set(word, '连接后的串')问题恐怕没有这么简单,既然是 从网络爬虫上爬到内容 那么你如何提取 关键字 呢?如果恰好将非法关键字给切断了呢?
    所以,应该是将已知非法关键字制作成词典(比如 trie 树),这样只需对外来的内容做一趟扫描就可以了
    有关 trie 树的讨论,精华区有收录。你可以参考一下