基本上,我目前有这行代码:
$uname = str_replace(array('!','"','£','$','%','%','^','&','*','(',')','-','+','=','\\','/','[',']','{','}',';',':','@','#','~','<',',','>','.','?','|',' '), '', $uname);
我知道它很乱,我以前从未在这个“背景”中使用它
无论如何,无论如何我还有另一个坏词的数组吗?例如:
$uname = str_replace(array)('!','"','£','$','%','%'), '', $uname);
str_replace(array)('badword1','badword2'), '****', $uname);
以上基本上就是我想要的,但如果它们是一种更简洁的方式,那么就像这样做,但欢迎任何帮助。
答案 0 :(得分:8)
您不需要创建两个或更多str_replace()
个实例,因为只使用一个可以替换尽可能多的单词。
首先,您必须为要过滤的每个坏词创建一个“组”,并将它们放在array
内。
Example:
$bannedWords = array('shit', 'john mccain', 'jack and jill', 'IE6');
如果变量包含禁止词列表中的单词,那么您可能想先检查一下。为此,您可以使用PHP的in_array()
函数:
if(in_array($_POST['keyword'], $bannedWords)){
// keyword not allowed,
}
在此之后,如果您要替换该单词,请使用str_replace()
作为:
$replaced = str_replace($bannedWords, "", $_POST['keyword']);
这将删除所有单词并将其替换为空,如果您已通过"x"
而不是""
作为第二个参数,那么它们将全部替换为x
通过将数组作为str_replace
的第二个参数传递,您可以定义一个唯一的单词来替换每个唯一的禁用单词:
str_replace(['IE6', 'mccain', 'shit'], ['FireFox', 'roosevelt', 'Cake'], $_POST['keyword'])
现在从$_POST['keyword']
开始,IE6将替换为FireFox,mccain将替换为罗斯福等等。
答案 1 :(得分:0)
$remove = new Array("noob", "racist", "hate", "gay", "etc");
$text = str_replace($remove, "", $post);
echo $text;
这是一种这样做的方式。如果你从post获得字符串,你可以创建一个删除数组,make一个文本变量用帖子中的""
替换数组。您可以回显文本,而不是发布,然后在显示回显文本时,不会显示数组中的任何单词。