如果任何单词在数组中,则匹配字符串的Php代码

时间:2016-09-20 22:48:56

标签: php mysql arrays

我一直试图匹配帖子查询sting,如果它包含数组中的任何单词。 我尝试使用命令执行sql查询来更新或选择,但我不想删除或删除行和表。

请注意以下代码与数组中的sting不匹配

<?php
if(isset($_POST['QueryCode'])){ 

             $RequestQuey = htmlspecialchars($_POST['QueryCode']);
             $sqlchecker = strtolower($RequestQuey);
             $bads_arrays = array(
             'ALTER', 
             'TABLE', 
             'DROP');

             foreach ($bads_arrays as $strings){
                if (strpos($sqlchecker , $strings) !== false) {
                    echo "Match found"; 
                    return false;
                }else{
            echo "Not found!";
            return true;    
            }
      }
?>

1 个答案:

答案 0 :(得分:1)

您正在对检查过的字符串执行strtolower(),但您在数组中有大写单词。因此要么将strpos替换为stripos,要么将数组中的单词更改为小写,或将检查的字符串($ sqlchecker)转换为大写。

$anyMatched = false;
foreach ($bads_arrays as $strings){
    if (stripos($sqlchecker , $strings) !== false) {
        $anyMatched = true;
    }
}

echo ($anyMatched ? 'Match found' : 'Not Found');
return $anyMatched;