Mar*_*ean 2 php regex preg-match
我正在向if我的数据库抽象层添加一个语句,以挑选出对少数数据库表的任何尝试查询.
基本上,如果我的应用程序试图从被称为members或者members_profiles我想调用我的if语句的数据库表中创建,读取或销毁数据.
if (
preg_match('/INSERT INTO [members|members_profiles]/', $sql) ||
preg_match('/UPDATE [members|members_profiles]/', $sql) ||
preg_match('/DELETE FROM [members|members_profiles]/', $sql))
{
// do if statement stuff here...
}
Run Code Online (Sandbox Code Playgroud)
我不是正则表达式/ preg-match master,但if如果SQL查询匹配,则上述语句将返回true:
INSERT INTO members ... 要么 INSERT INTO members_profiles ...UPDATE members ... 要么 UPDATE members_profiles ...DELETE FROM members ... 要么 DELETE FROM members_profiles ...或者我的preg-match语法是否关闭?
语法有效但不会执行您想要的操作.
对于图案的交替,请使用
preg_match('/INSERT INTO (?:members|members_profiles)/', $sql) ||
// ^^^ ^
Run Code Online (Sandbox Code Playgroud)
在PCRE中,[…]定义一个字符类.这将匹配1个字符,因为它出现在括号内.在你的情况[members|members_profiles]将匹配1个字符,如果它是一个b,e,f,i,l,m,o,p,r,s,|或_.
分组是使用另一种括号完成的(?:…).
(顺便说一句,请不要使用Regex来检测数据库更改尝试.请改为限制数据库用户的权限.)
| 归档时间: |
|
| 查看次数: |
1099 次 |
| 最近记录: |