您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

来问一个有关问题,正则匹配创建数据库SQL的数据库名称

2024/11/30 3:47:44发布20次查看
来问一个问题,正则匹配创建数据库sql的数据库名称?
要考虑所有情况,只要能创建数据库的sql的名称都要匹配出来哦。
名称有可能没有``,有可能没有空格,有可能没有修饰关键字等...
------解决方案--------------------
/create\s+database\s+(\w+)/is
名称有可能没有``,有可能没有空格
无可能
------解决方案--------------------
php code ------解决方案--------------------

php code ------解决方案--------------------
名称里面可以出现什么符号 往中括号里面加就行了 比如你说的() [\w@#`()]
我只能保证数据库名两边同时出现 ` 或者同时不出现 `,不能控制里面 ` 的数量
------解决方案--------------------

探讨
就是说只要用上`` 名字里可以有任何符。
没用上`的话 名字只能用字母与数字,而且前面要加个空格与database文字分隔开。
------解决方案--------------------
那串符号可以用[:punct:]表示,[:punct:]代表标点符号字符 类似的还有[:alnum:] [:space:] ... 各表示几种类型的字符串
可以修改如下
php codepreg_match_all('/create\s+database\s*((([`\'])?)([\w[:punct:]]+)\2\s?)/is',$sql,$matchs);
------解决方案--------------------
试下

php code$databases = ------解决方案--------------------
上面的不行,``中间的`必须是偶数位。。这个比较麻烦。
------解决方案--------------------

探讨
没错啊。``中间的`是偶数位能匹配出来就没问题。为单数的话说明是有问题的sql了,不需考虑。
你上面的`aaa````bbb` 匹配不了哦。
引用:
上面的不行,``中间的`必须是偶数位。。这个比较麻烦。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product