肯定是一个简单的问题,但我无法解决......
我只想检测我的sql查询是以“select”还是其他任何东西开头。 这段代码似乎不起作用:
if (preg_match("/^(select)/i", $sql) > 0)
{
// SELECT query
}
else
{
// other query
}
感谢您的帮助!
[编辑] 好的,我有根本原因: 在关键字“select”...
之前,我可能有空格,制表符和换行符答案 0 :(得分:7)
不需要正则表达式,请使用stripos
$query = "SELECT * FROM table WHERE field = 1";
if (stripos(trim($query), "SELECT") === 0)
echo "Query begins with $str";
else
echo "Query DOES NOT begin with $str";
// Notice: trim() will remove whitespace before and after your $query string.
或者,如果你想坚持使用preg_match:
if (preg_match("/^select (.*)/i", trim($query)) > 0) {
//...
答案 1 :(得分:2)
尝试:
if (preg_match("/^[[:space:]]*select/i", $sql))
这将匹配开头和select
之间的任何(或没有)空白区域,因此会考虑您的空格,制表符等。
更新,可能是您的系统:
if (preg_match("/^\s*select/i", $sql))
答案 2 :(得分:2)
好的,我明白了:
preg_match("/[\s]*(select)/i", $sql)
无论如何,谢谢你的回答!