Недавно я работаю над фильтром плохого контента (например, рекламного сообщения) BBS.And. Я пишу функцию для обнаружения строки в другой строке, а не непрерывно. Код ниже:обнаруживает строку, содержащуюся другой прерывисто
$str = 'helloguys';
$substr1 = 'hlu';
$substr2 = 'elf';
function detect($a,$b) //function that detect a in b
{
$c = '';
for($i=0;$i<=strlen($a);$i++)
{
for($j=0;$j<=strlen($b);$j++)
{
if($a[$i] == $b[$j])
{
$b=substr($b,$j+1);
$c .=$a[$i];
break;
}
}
}
if($c == $a) return true;
else return false;
}
var_dump(detect($substr1,$str)); //true
var_dump(detect($substr2,$str)); //false
Поскольку фильтр работает до того, как пользователи выполняют свои сообщения, поэтому я считаю, что эффективность здесь важна. И мне интересно, есть ли лучшее решение? Благодаря!
Это осуществимо, я проверю его против моего. Спасибо. – Young