我想这样做在PHP中发现some words
包含在一个字符串如何找到一些包含在字符串中的单词?
if (strpos($str,array("select","update","insert into","delete") !== False){
echo "string contain SQL statements";
}
任何人都知道如何做到这一点?
我想这样做在PHP中发现some words
包含在一个字符串如何找到一些包含在字符串中的单词?
if (strpos($str,array("select","update","insert into","delete") !== False){
echo "string contain SQL statements";
}
任何人都知道如何做到这一点?
如果你的意思是你想,如果任何一个字都包含在字符串中检测到,你可以这样做:
$sql_words = array(...);
if(count(array_intersect(explode(' ', strtolower($str)), $sql_words)) > 0) {
}
虽然如果字符串包含select
,这并不意味着它是一个SQL查询。但我想这取决于上下文。
根据字符串,你可能也想使用str_word_count
。
可以使用strstr功能如下:
$string_to_be_searched_in = "SELECT * FROM MyTable";
$sqlWords = array("insert", "update", "delete" ...);
foreach($sqlWords as $word) {
if(strstr($string_to_be_searched_in, $word) != FALSE) {
echo "The given string is an SQL statement";
}
}
尝试
$string = "i m where ?";
$searchfor = array("select","from","where","and","and",update,"set","insert","into","value");
foreach($searchfor as $v) {
if(false !== strpos($string, $v)) {
//Found a word
echo 'Found '.$v;
break;
}
}
参考:
还研究
如果字符串包含“somewhere”这个词,那么该怎么办? – 2011-05-06 13:16:00
而你的'if'语句实际上是不正确的。它应该是:'if(strpos($ string,$ v)> -1)'。 – 2011-05-06 13:29:19
我检查过...这对我来说工作得很好。虽然它在某处失败 – diEcho 2011-05-06 13:32:59
您要使用的功能是preg_match()。它使用regular expressions将模式匹配到字符串,并返回模式匹配的次数 - 如果您将数组作为参数传递,还可以使用它从字符串中提取信息(在您的示例中,可以拉出该查询是)。
关于在PHP中使用正则表达式,您应该阅读these pages,this page将允许您测试正则表达式。
请修改您的问题...哪个是'word',哪个是'string' ??? – diEcho 2011-05-06 13:11:41
您发布的代码会在字符串中找到这些单词吗? – 2011-05-06 13:16:31
不是真的,找到了一些案例,有些案例不是 – kn3l 2011-05-06 13:17:38