??敏感詞檢測(cè),過(guò)濾,標(biāo)記

v0.0.5
版本
2023-08-17
版本更新時(shí)間
767
安裝
17
star
webman-sensitive
Webman 敏感詞檢測(cè),過(guò)濾,標(biāo)記
安裝
composer require isszz/webman-sensitive
配置
return [
'enable' => true,
// 支持file,array,也可以指向自己敏感詞庫(kù)文件路徑
// file模式時(shí),敏感詞庫(kù)位于webman根目錄的config/plugin/isszz/webman-sensitive/SensitiveWord.txt,也可以指向自定義的詞庫(kù)文件路徑
'mode' => 'file',
'config' => [
'repeat' => true, // 重復(fù)替換為敏感詞相同長(zhǎng)度的字符
'replace_char' => '*', // 替換字符
// 標(biāo)記敏感詞,標(biāo)簽生成<mark>敏感詞</mark>
'mark' => 'mark',
],
// 干擾因子
'interference_factors' => [
' ', '&', '*', '/', '|', '@', '.', '^', '~', '$',
],
// 數(shù)組模式敏感詞
'sensitive_words' => [
'工口',
'里番',
'性感美女',
]
];
使用
facade方式
use isszz\sensitive\facade\Sensitive;
class Index
{
public function add()
{
// 設(shè)置干擾因子
Sensitive::interferenceFactor(['(', ')', ',', ',', ';', ';', '。']);
// 添加一個(gè)額外的敏感詞,words參數(shù)支持單敏感詞,多詞也可以用|分割,或者直接傳入多個(gè)敏感詞數(shù)組
// words = 性感美女|分隔符
// words = ['性感美女', '數(shù)組']
Sensitive::add(words: '性感美女');
// 刪除的敏感詞,words參數(shù)同添加的格式一樣
// 第二個(gè)參數(shù)once為true時(shí),只針對(duì)當(dāng)次: is,replace,mark,操作生效
Sensitive::remove(words: '性感美女', once: true);
// 檢測(cè)
if (Sensitive::is(content: '檢測(cè)語(yǔ)句')) {
return json(['code' => 1, 'msg' => '輸入內(nèi)容包含敏感詞,請(qǐng)注意用詞。']);
}
// 替換
$replaced = Sensitive::add(words: '垃圾')->replace(content: '替換語(yǔ)句垃圾要被替換', replaceChar: '*', repeat: false);
// 標(biāo)記敏感詞
$marked = Sensitive::add(words: '尼瑪')->mark(content: '標(biāo)記的內(nèi)容,這里尼瑪要被標(biāo)記', tag: 'bad');
// 提取內(nèi)容中的所有敏感詞
$badWords = Sensitive::add('測(cè)試|你好')->get('提取內(nèi)容中的所有敏感詞,測(cè)試,還有你好都會(huì)被提取');
// 自定義敏感詞庫(kù)
// 文件方式
Sensitive::custom('/config/SensitiveWord.txt')
->is('檢測(cè)尼瑪?shù)恼Z(yǔ)句');
// 數(shù)組方式
Sensitive::custom([
'垃圾', '尼瑪',
//...
])->is('檢測(cè)尼瑪?shù)恼Z(yǔ)句');
// 文件詞庫(kù)模式,可以添加新敏感詞到詞庫(kù)文件
// data參數(shù)可以是一個(gè)數(shù)組也可以是用|分割敏感詞的字符串
// append參數(shù)為true是追加模式,false時(shí)先提取詞庫(kù),再去重,然后合并寫(xiě)入
$sensitive->addWordToFile(data: '狗逼|傻缺', append: false);
}
}
依賴注入方式,推薦
use isszz\sensitive\Sensitive;
class Index
{
public function add(Sensitive $sensitive)
{
// 設(shè)置干擾因子
$sensitive->interferenceFactor(['(', ')', ',', ',', ';', ';', '。']);
// ...
}
}
助手函數(shù)方式
class Index
{
public function add(Sensitive $sensitive)
{
// 設(shè)置干擾因子,后返回的Sensitive實(shí)例可使用:is,replace,mark
sensitive_interference_factor(['(', ')', ',', ',', ';', ';', '。'])
->is('檢測(cè)語(yǔ)句尼瑪');
// 添加敏感詞,后返回的Sensitive實(shí)例可使用:is,replace,mark
sensitive_add(words: '性感美女')
->mark('你是一個(gè)性感美女,你說(shuō)是不是?');
// 移除敏感詞,后返回的Sensitive實(shí)例可使用:is,replace,mark
// 第二個(gè)參數(shù)once為true時(shí),只針對(duì)當(dāng)次: is,replace,mark,操作生效
sensitive_remove(words: '工口', once: true)
->mark('你這個(gè)SB是不是想看工口類的動(dòng)漫?哈哈!');
// 檢測(cè)敏感詞
if (sensitive_is('檢測(cè)語(yǔ)句尼瑪')) {
return json(['code' => 1, 'msg' => '輸入內(nèi)容包含敏感詞,請(qǐng)注意用詞。']);
}
// replaceChar是用來(lái)設(shè)置要被替換的敏感詞
// repeat為true時(shí)根據(jù)檢測(cè)出的敏感詞長(zhǎng)度設(shè)置replaceChar
$replaced = sensitive_replace(content: '替換語(yǔ)句垃圾要被替換', replaceChar: '*', repeat: true);
// tag參數(shù)是用來(lái)設(shè)置包裹敏感詞的標(biāo)簽名例如: 這里<bad>SB</bad>要被標(biāo)記
$marked = sensitive_mark(content: '標(biāo)記的內(nèi)容,這里SB要被標(biāo)記', tag: 'bad');
// 提取內(nèi)容中的所有敏感詞
$badWords = sensitive_get('誰(shuí)是SB,誰(shuí)是狗逼,誰(shuí)是傻缺');
// 自定義敏感詞庫(kù)
// 文件方式
sensitive_custom('/config/SensitiveWord.txt')
->is('檢測(cè)尼瑪?shù)恼Z(yǔ)句');
// 數(shù)組方式
sensitive_custom([
'垃圾', '尼瑪',
//...
])->is('檢測(cè)尼瑪?shù)恼Z(yǔ)句');
// 文件詞庫(kù)模式,可以添加新敏感詞到詞庫(kù)文件
// data參數(shù)可以是一個(gè)數(shù)組也可以是用|分割敏感詞的字符串
// append參數(shù)為true是追加模式,false時(shí)先提取詞庫(kù),再去重,然后合并寫(xiě)入
sensitive_add_word_to_file(data: '狗逼|傻缺', append: false);
}
}