2

私は文字列を持っています:

$data = "String contains works like apples, peaches, banana, bananashake, appletart";

また、次の2つのstd配列があり、いくつかの単語が含まれています。

$profanityTextAllowedArray = array();
$profanityTextNotAllowedArray = array();

例えば:

$profanityTextAllowedArray
(
    [0] => apples
    [1] => kiwi
    [2] => mango
    [3] => pineapple
)

文字列を取得して$data、最初にから単語を削除してから、フラグを立てる必要のある単語がないか$profanityTextAllowedArray文字列を確認するにはどうすればよいですか?$data$profanityTextNotAllowedArray

4

2 に答える 2

3
$list = explode( ' ', $data );

foreach( $list as $key => $word ) {
  $cleanWord = str_replace( array(','), '', $word ); // Clean word from commas, etc.
  if( !in_array( $cleanWord, $profanityTextAllowedArray ) ) {
    unset($list[$key]);
  }
}

$newData = implode( ' ', $list );

それが明らかであるかどうか私に知らせてください。

于 2013-02-26T11:54:29.337 に答える
2

このようなものがあなたを助けることができます:

$data = "apples, peaches, banana, bananashake, appletart";

$allowedWords = array('apples', 'peaches', 'banana');
$notAllowedWords = array('foo', 'appletart', 'bananashake');

$allowedWordsFilteredString = preg_replace('/\b('.implode('|', $allowedWords).')\b/', '', $data);

$wordsThatNeedsToBeFlagged = array_filter($notAllowedWords, function ($word) use ($allowedWordsFilteredString) {
    return false !== strpos($allowedWordsFilteredString, $word);
});

var_dump($wordsThatNeedsToBeFlagged);
于 2013-02-26T12:01:22.910 に答える