PDA

Просмотр полной версии : php: вопрос с алгоритмом


GreenBear
02.03.2007, 13:06
есть строка... есть 2 массива.
в массиве 1 - что не может быть в переменной
в массиве 2 - что может быть в переменной.

так вот суть вопрос:
сделать так, чтобы если в массиве есть плохое слово и этого слова нету в разрешенных, то скрипт останавливает.
если есть пллохое слово и это слово есть в разершенных, то скрипт идет дальше.

например:

$bad_array = array('test', 'test2', 'test3');
$allow_array = array(
'xaxa' => array('test', 'test3'),
);

если str=test test3 или str=test3 или str=test, то продолжаем,
а если str равна, например, test test2 то надо остановиться..

в общем вроде бы просто, но никак не лезет в голову, как на пхп это реализовать.

GreenBear
02.03.2007, 13:22
Даю 150 рублей, тому кто подскажет реализацию.
Срочно надо.

Stefun
02.03.2007, 13:30
$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;

Stefun
02.03.2007, 13:31
вроде так

DIAgen
02.03.2007, 13:35
Вот моя реализация этого алгоритма!

<?
$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);
?>

GreenBear
02.03.2007, 14:05
Вы не совсем поняли...

<?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){
//
}
}

?>

madnet
02.03.2007, 14:09
Если я тебя правильно понял


<?
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");
?>

GreenBear
02.03.2007, 14:25
Madnet, спасибо больше. Если нужно то, что во 2 посте, напиши в асику кошелек.

madnet
02.03.2007, 14:28
Madnet, спасибо больше. Если нужно то, что во 2 посте, напиши в асику кошелек.

не смеши, обращайся, если нужна помощь.