来问一个有关问题,正则匹配创建数据库SQL的数据库名称
Jun 13, 2016 pm 01:34 PM
来问一个问题,正则匹配创建数据库SQL的数据库名称?
要考虑所有情况,只要能创建数据库的SQL的名称都要匹配出来哦。
名称有可能没有``,有可能没有空格,有可能没有修饰关键字等...
------解决方案--------------------
/create\s+database\s+(\w+)/is
名称有可能没有``,有可能没有空格
无可能
------解决方案--------------------
- PHP code
<?php $sql=<<<SQL CREATE DATABASE `aaab`' CREATE DATABASE aaab CREATE DATABASE`aaab` CREATE DATABASE`aaa@@@#b` CREATE DATABASE`aaa``b` SQL; preg_match_all('/CREATE\s+DATABASE\s?((`?)[\w@#]+\2)+/is',$sql,$matchs); print_r($matchs); <br /><font color="#e78608">------解决方案--------------------</font><br>
- PHP code
<?php $sql=<<<SQL CREATE DATABASE `aaab`' CREATE DATABASE aaab CREATE DATABASE`aaab` CREATE DATABASE`aaa@@@#b` CREATE DATABASE`aaa``b` CREATE DATABASE aaab DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci SQL; preg_match_all('/CREATE\s+DATABASE\s*(([`\'"]?)([\w@#`]+)\2\s?)/is',$sql,$matchs); print_r($matchs[3]); <br /><font color="#e78608">------解决方案--------------------</font><br>名称里面可以出现什么符号 往中括号里面加就行了 比如你说的() [\w@#`()]<br>我只能保证数据库名两边同时出现 ` 或者同时不出现 `,不能控制里面 ` 的数量 <br><font color="#e78608">------解决方案--------------------</font><br>
------解决方案--------------------
那串符号可以用[:punct:]表示,[:punct:]代表标点符号字符 类似的还有[:alnum:] [:space:] ... 各表示几种类型的字符串
可以修改如下
- PHP code
preg_match_all('/CREATE\s+DATABASE\s*((([`\'"])?)([\w[:punct:]]+)\2\s?)/is',$sql,$matchs); <br><font color="#e78608">------解决方案--------------------</font><br> 试下<br>
- PHP code
$databases = <font color="#e78608">------解决方案--------------------</font><br>上面的不行,``中间的`必须是偶数位。。这个比较麻烦。 <br><font color="#e78608">------解决方案--------------------</font><br>

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Was ist der Unterschied zwischen HQL und SQL im Hibernate-Framework?

So beheben Sie den Discuz-Datenbankfehler

Leak enthüllt wichtige Spezifikationen von Intel Arrow Lake-U, -H, -HX und -S

Verwendung der Divisionsoperation in Oracle SQL

Was bedeutet das Identitätsattribut in SQL?

Vergleich und Unterschiede der SQL-Syntax zwischen Oracle und DB2

Ausführliche Erläuterung der Funktion „Tag festlegen' in den dynamischen SQL-Tags von MyBatis

Wie nutzt Java den MySQL-Treiber-Interceptor, um zeitaufwändige Berechnungen der SQL-Ausführung zu implementieren?
