1

我在这里尝试做的是设置某种过滤器。

我目前没有源代码,但我可以在找到如何执行此操作后快速输入它。

所以说我有

$Variable1 = "The Brown Fox Jumps";

我想要一个 If 语句在哪里

IF $Variable1 contains a word from a .txt file (filter.txt) Then $Variable1 = "Filtered"

所以如果文本文件包含

Hey
Hi
Jump
Brown

它会将整个事情更改为过滤。我不知道我会怎么写,所以有点帮助打字会很好:)

多谢你们

4

4 回答 4

1

什么是你不明白的?

我想说,最简单的方法:

1)读取文本文件:$str = file_get_contents('filter.txt');

2)将文本文件的内容分解为数组:(第一个参数是分隔符,如有必要可更改)

$badwords = explode(" ",$str);

3)如果您$variable匹配新创建的数组中的任何单词,请将其更改为“过滤”:

foreach($badwords as $badword) {
   if(stristr($badword,$variable) {
       $variable = 'filtered';
       break;
    }
 }
于 2012-09-19T00:34:03.220 回答
1

我不会像为它分配一个新变量那样更改变量名本身。

// if you want to search by ONE word
$file = file_get_contents(your_text_file_here);

if(stripos($file, $variable1)){
// there was a match
  $variable1 = "Filtered";
}



// if you want to search your document for MULTIPLE words
$file = file_get_contents(your_text_file_here);

foreach(explode(' ', $file) as $word) {
  if(stripos($word, $variable1)){
  // there was a match
    $variable1 = "Filtered";
  }
}

我不太确定这是否有帮助,但 stripos 是一个函数,它接受一个字符串并且不区分大小写地确定是否存在匹配项。

如果您输入一些代码,那么我想我可以进一步帮助您。

于 2012-09-19T00:34:56.317 回答
1

这是您的代码:

$filters = file('filter.txt');
foreach( $filters AS $word ) {
  if( stripos( $Variable1, $word ) !== null ) {
     $Variable1 = 'filtered';
     break;
   }
}
于 2012-09-19T00:36:14.740 回答
1

如果您的文件由换行符分隔:

$file = file_get_contents('filter.txt');
$bad_words = explode(PHP_EOL, $file); // If PHP_EOL doesn't work there are other EOL characters you can try.
$variable1 = "This is some string."
$compare = explode(' ', $variable1);
if(count(array_intersect($bad_words, $compare)) > 0){
  $variable1 = 'Filtered';
}
于 2012-09-19T00:52:51.230 回答