如何用PHP中的dotall修饰符指定行的结尾?

时间:2014-01-29 13:44:12

标签: php regex

我正在尝试从文件中查找CREATE SQL查询,以简化我在每个查询结束时编写的#end任务,但搜索仍在继续,我在一个数组中得到了一些结果索引(或简称文件的延续),而不是一个。

preg_match_all('/CREATE.*#end/su', $sql, $queries);

SQL示例:

CREATE TABLE `tblname` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `label` varchar(32) NOT NULL,
  `description` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `label` (`label`)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8#end

1 个答案:

答案 0 :(得分:2)

默认情况下,问题可能是* 贪婪。这意味着它可以找到最长匹配,而不是最短。不加考虑:.*?,现在它会在找到一个匹配后立即停止匹配。