请在以下方面提供帮助:
我使用以下正则表达式模式来捕获 MySQL 查询中的所有值 (["'])(?:(?=(\\?))\2.)*?\1
这在正则表达式在线测试器上运行时非常好https://regex101.com/r/tysxYk/1
但是当我在 php 中使用它时,它什么都不返回并且无法弄清楚出了什么问题
<?php
$query = <<<EOT
UPDATE `wp_options` SET `option_value` = 'a:1151:{s:15:\"activ";}' WHERE `option_name` = 'my_options';
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
EOT;
$status = preg_match( '#(["\'])(?:(?=(\\?))\2.)*?\1#', $query, $matches );
print_r($matches);
感谢您的支持!
答案 0 :(得分:0)
Regex101 有自己的代码生成器,使用提供的链接,将生成:
<?php
$re = '/(["\'])(?:(?=(\\\\?))\2.)*?\1/m';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
var_dump($matches);
preg_match_all
而不是 preg_match