2011-01-07 42 views
2

我有一個數組幾個嘰嘰喳喳的鳴叫的話,你想刪除這個數組,其中包含下列單詞之一的所有微博黑名單項目| blackwords | somemorePHP - >刪除陣列包含從黑名單

誰可以幫我解決這個案子?

+1

您可以顯示一些你已經測試的代碼或試圖使用?如何使用推文發佈數組格式?可能是有用的 – 2011-01-07 18:10:57

+1

黑名單|黑名單有多存儲?數據庫,數組,文件... – maid450 2011-01-07 18:17:11

+0

不知道數組的格式和黑名單的格式,這個問題很難回答。 – mfonda 2011-01-07 18:19:31

回答

6

這裏有一個建議:

<?php 
$banned_words = 'blacklist|blackwords|somemore'; 
$tweets = array('A normal tweet', 'This tweet uses blackwords'); 
$blacklist = explode('|', $banned_words); 

// Check each tweet 
foreach ($tweets as $key => $text) 
{ 
    // Search the tweet for each banned word 
    foreach ($blacklist as $badword) 
    { 
     if (stristr($text, $badword)) 
     { 
      // Remove the offending tweet from the array 
      unset($tweets[$key]); 
     } 
    } 
} 
?> 
2

你可以做到這一點在很多方面,所以沒有更多的信息,我可以給這個真的開始代碼:

$a = Array(" fafsblacklist hello hello", "white goodbye", "howdy?!!"); 
$clean = Array(); 
$blacklist = '/(blacklist|blackwords|somemore)/'; 

foreach($a as $i) { 
    if(!preg_match($blacklist, $i)) { 
    $clean[] = $i; 
    } 
} 

var_dump($clean);
1

使用正則表達式:

preg_grep($array,"/blacklist|blackwords|somemore/",PREG_GREP_INVERT)

但我警告你,這可能是無用的,你必須照顧黑名單中的標點符號。

4

可以使用array_filter()功能:

$badwords = ... // initialize badwords array here 
function filter($text) 
{ 
    global $badwords; 
    foreach ($badwords as $word) { 
     return strpos($text, $word) === false; 
    } 
} 

$result = array_filter($tweetsArray, "filter"); 
4

使用array_filter

檢查該樣本

$tweets = array(); 

function safe($tweet) { 
    $badwords = array('foo', 'bar'); 

    foreach ($badwords as $word) { 
     if (strpos($tweet, $word) !== false) { 
      // Baaaad 
      return false; 
     } 
    } 
    // OK 
    return true; 
} 

$safe_tweets = array_filter($tweets, 'safe'));