есть строка... есть 2 массива. в массиве 1 - что не может быть в переменной в массиве 2 - что может быть в переменной. так вот суть вопрос: сделать так, чтобы если в массиве есть плохое слово и этого слова нету в разрешенных, то скрипт останавливает. если есть пллохое слово и это слово есть в разершенных, то скрипт идет дальше. например: PHP: $bad_array = array('test', 'test2', 'test3'); $allow_array = array( 'xaxa' => array('test', 'test3'), ); если str=test test3 или str=test3 или str=test, то продолжаем, а если str равна, например, test test2 то надо остановиться.. в общем вроде бы просто, но никак не лезет в голову, как на пхп это реализовать.
PHP: $i=0; foreach($bad_array as $v) { if($str==$v) {$i=1;foreach($allow_array as $v2) if($str==$v2) {$i=0;break;}} } if($i) exit;
Вот моя реализация этого алгоритма! PHP: <? $bad_array = array('bla', 'xyx', 'spider'); $good_array = array('123', '456', '789'); $allow_array = array( 'xaxa' => array('test', 'xyx', 'test3' , 'bla'),); foreach ($allow_array as $index) { $result = str_replace($bad_array, $good_array, $index); } print_r ($result); ?>
Вы не совсем поняли... PHP: <?php $bad1 = array('test', 'test2', 'test3'); $bad2 = array('xek1', 'xek2', 'xek3'); $allow = array( 'xaxa' => array('test', 'xek2'), 'xuxu' => array('test3') ); $vars = array( 'mega' => 'traaaa', 'lol' => 'test3 count', 'xuxu' => 'lalal xek1' , 'xaxa' => 'llolol test' ); foreach($vars as $k=>$v){ foreach($bad1 as $b){ //тут то и нужна эта реализация } foreach($bad2 as $b){ // } } ?>
Если я тебя правильно понял PHP: <? function check($string) { $bad_array = array('test', 'test2', 'test3'); $allow_array = array('test', 'test3'); $string = explode(" ",$string); foreach ($string as $temp) { if (in_array($temp,$bad_array) and (!in_array($temp,$allow_array))) return false; } return true; } $string = "test test2"; if (check($string)) echo("ALL FINE"); else echo("FUCK"); ?>