我实际上在一个网站上工作,我需要用例如banana
******
替换许多单词。
我使用的是带有php和mysql的网站,但我也使用了javascript。
我的数据库中有一张表是禁止的单词。
我在数据库中的数组中收到这些单词。我正在寻找能够在所有页面中替换这些单词的功能。我不能使用像ob start这样的功能。
最好的功能是检查正文加载并替换单词。
答案 0 :(得分:4)
这是一项相当困难的任务,因为:
我建议使用已经解决过的服务:
答案 1 :(得分:2)
我将使用CoffeeScript,如果您愿意,可以编译为JavaScript here,或者只将其用作伪代码。
String::replaceAll = (a, b) ->
regExp = new RegExp(a, "ig")
@replace regExp, b
_stars = (string) ->
str = ""
for i in [0..string.length]
str = "#{str}*"
str
bannedWords = [ "bannedword", "anotherbannedword" ]
_formSubmitHandler = (data) ->
for bannedWord in bannedWords
data.userInput = data.userInput.replaceAll bannedWord, _stars(data.userInput)
答案 2 :(得分:1)
如果页面内容同样来自数据库,或者正在输入数据库。为什么不在插入之前或使用str_replace
// PREFERRED WAY
$filteredContent = str_replace($bannedlist, "**", $content2Filter);
或者,如果您正在寻找一个javascript版本,那么您需要使用多个str.replace
或正则表达式。类似的东西:
var search = "/word1|word2|word3/gi"; //This would be your array joined by a pipe delimiter
var ret=str.replace(search,'**');
答案 3 :(得分:1)
我为此做了一个非常简单的审查方法。它只会跟踪你输入坏词数组的单词。我建议您使用高级库进行单词检查。
censor.js
var censor = (function() {
function convertToAsterisk(word) {
var asteriskSentence = '';
for(var asterisks=0;asterisks<word.length;asterisks++) {
asteriskSentence+='*';
}
return asteriskSentence;
}
return function(sentence, bannedWords) {
sentence = sentence || undefined;
bannedWords = bannedWords || undefined;
if(sentence!==undefined && bannedWords!==undefined) {
for(var word=0;word<bannedWords.length;word++) {
sentence = sentence.replace(bannedWords[word], convertToAsterisk(bannedWords[word]));
}
}
return sentence;
};
})();
该方法可以这样使用:
var sentence = 'I like apples, grapes, and peaches. My buddy likes pears';
var bannedWords = [
'pears',
'peaches',
'grapes',
'apples'
];
sentence = censor(sentence, bannedWords);
该系统不保护其他词语中的坏词或棘手的错误拼写。只有基础。
答案 4 :(得分:0)
var str="badword";
var ret=str.replace("badword","*******");
自动检测长度(对功能用途有用)
var str="badword";
var ret=str.replace("badword",function() {
var ret = ""
for(var loop = 0; loop < str.length; loop++) {
var ret = ret + "*"
}
return ret
});
答案 5 :(得分:0)
最后,我找到了自己的方法来制作这个系统,这是一种简单的方法,您不需要为所有网站更改所有需要审查的页面的代码。
就我而言,我使用的是页面,但事实是我有一个包含其他页面的主页面。
对于可能感兴趣的人。你所要做的就是把这段代码放在页面的开头,这样只需把这段代码<?php ob_start(); ?>
放在正文的末尾,然后再把这段代码放到`
<?php
//We get the content of the page
$content = ob_get_contents();
// and we replace all
$content = str_replace('naughty', '*****', $content);
/// / VERY important, we must finish the page or in any case include ob_end_clean () function before echo $ content as PHP code would be displayed also
ob_end_clean ();
echo $content;
?>
这是一种简单的方法,但你也可以为所有被删除的单词做一个数组。
答案 6 :(得分:0)
完全披露,我写了插件。
我写了一个jQuery插件,可以满足您的需求。它不是完全防水的,其他人可以通过禁用javascript轻松绕过插件。如果你想尝试一下,这里有一个链接。
http://profanityfilter.chaseflorell.com/
这是一些示例代码。
<div id="someDiv">swears are ass, but passwords are ok</div>
<script>
$('#someDiv').profanityFilter({
customSwears: ['ass']
});
</script>