php preg_match以关键字开头

Réj*_*ôme 4 php keyword preg-match

当然是一个简单的问题,但我无法解决...

我只是想检测我的sql查询是以"select"还是其他任何东西开头.这段代码似乎不起作用:

if (preg_match("/^(select)/i", $sql) > 0)
{
// SELECT query
}
else
{
// other query
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助 !

[编辑]好的,我有根本原因:我可能在关键字"选择"之前有空格,制表符和换行符...

Jos*_*osh 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.
Run Code Online (Sandbox Code Playgroud)

例如:http://ideone.com/hLaBq

或者,如果你想坚持使用preg_match:

if (preg_match("/^select (.*)/i", trim($query)) > 0) {
    //...
Run Code Online (Sandbox Code Playgroud)

例如:http://ideone.com/fzh2I


Réj*_*ôme 2

好,我知道了 :

preg_match("/[\s]*(select)/i", $sql)
Run Code Online (Sandbox Code Playgroud)

不管怎样,谢谢你的回答!