2012-09-19 72 views
1

此處試圖在此處設置某種過濾器。如果在PHP中包含一個變量,則更改其變量

我目前沒有源代碼,但是在找出如何做到這一點之後,我可以快速輸入它。

所以說我有

$Variable1 = "The Brown Fox Jumps"; 

我想去的地方

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

因此,如果文本文件包含

Hey 
Hi 
Jump 
Brown 

這將整件事變成過濾一個if語句。我不知道我會怎麼寫,所以有點幫助打字這將是很好:)

謝謝你們

+0

您的描述是不完整的。如果'$ Variable1'擁有'嗨嗨'或'嗨嗨'或'嗨嗨foo'? –

+0

如果變量1包含.txt文件中包含的任何單詞。 – Ron

+0

您可能不想使用stripos,因爲它會匹配部分字詞。不好的單詞'an'會匹配'pan','can','螞蟻'等等......也許這就是你想要的? – donutdan4114

回答

1

如果文件被換行delimeted:

$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'; 
} 
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; 
    } 
} 
+0

不知道文本文件有多大,但是當我在foreach()和stripos上進行速度測試時,stripos速度要快得多。 –

+0

你的意思是stristr vs stripos?因爲你肯定需要一個foreach,因爲他想從文本文件中檢查「$ variable」中的「1個或更多」單詞,而不是文本文件的全部內容。 – bartvanraaij

+0

對不起,我瞥了一眼,就誤解了你的代碼。我很抱歉! –

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函數是一個函數,將一個字符串不區分大小寫確定是否存在匹配。

如果您鍵入一些代碼,那麼我認爲我可以進一步幫助您。

1

這裏是你的代碼:

$filters = file('filter.txt'); 
foreach($filters AS $word) { 
    if(stripos($Variable1, $word) !== null) { 
    $Variable1 = 'filtered'; 
    break; 
    } 
}