关键词匹配是比较常见的需求,如留言、弹幕及游戏聊天中的敏感词过滤,都需要对一段文字进行关键词匹配。提取到关键词后,再做进一步处理。关键词匹配是比较常见的需求,如留言、弹幕及游戏聊天中的敏感词过滤,都需要对一段文字进行关键词匹配。提取到关键词后,再做进一步处理。 本类借助PHP高效的数组和mbstring扩展,来实现对中文关键词的匹配。主要思想是以关键词为key,构
本类借助PHP高效的数组和mbstring扩展,来实现对中文关键词的匹配。主要思想是以关键词为key,构建字典数组,这样便可以对每个关键词可实现常数级别的查找。
具体代码如下:
php">class WordMatcher {
public $dict = [];
public $wordMaxLen = 0;
function __construct(){
if(! extension_loaded('mbstring')) {
exit('extension mbstring is not loaded');
}
}
function addWord($word) {
$len = mb_strlen($word, 'utf-8');
$this->wordMaxLen = $len > $this->wordMaxLen ? $len : $this->wordMaxLen;
$this->dict[$word] = 1;
}
function removeWord($word) {
unset($this->dict[$word]);
}
function match($str, &$matched, $matchAll=false) {
if(mb_strlen($str) < 1) {
return;
}
$matchLen = 0;
$len = $this->wordMaxLen;
while($len>0) {
$substr = mb_substr($str, 0, $len, 'utf-8');
if(isset($this->dict[$substr])) {
$matchLen = $len;
$matched[] = $substr;
break;
} else {
$len--;
}
}
if(!$matchAll && $matchLen) {
$str = mb_substr($str, $matchLen, null, 'utf-8');
} else {
$str = mb_substr($str, 1, null, 'utf-8');
}
$this->match($str, $matched, $matchAll);
}
}
$matcher = new WordMatcher;
$matcher->addWord('PHP');
$matcher->addWord('语言');
$matcher->addWord('H');
$matcher->match('PHP是最好的语言', $matched);
沃梦达教程
本文标题为:PHP中文关键词匹配实例代码
基础教程推荐
猜你喜欢
- php实现计数器的实例代码 2022-08-27
- PHP正则匹配日期和时间(时间戳转换)的实例代码 2022-07-22
- php获取textarea的数据里的每一行数据,并转为数组 2023-09-13
- php三个数求最大值的实例代码 2022-11-19
- php实现数组分组简单的一个代码实例 2022-08-01
- PHP代码判断IP地址是否相匹配或者是否在一个IP段里 2023-07-08
- php非stream流chatgpt3.5输出模式代码用于批量发布文章 2023-09-13
- php header()函数实现文件下载的实例 2022-10-13
- php将文本内容导出为word文档,php导出doc文档 2022-09-18
- PHP将HTML页面输出为word文档的办法 2022-09-23