preg_match 不返回任何东西

时间:2020-12-21 16:45:07

标签: php regex

请在以下方面提供帮助:

我使用以下正则表达式模式来捕获 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);

感谢您的支持!

1 个答案:

答案 0 :(得分:0)

Regex101 有自己的代码生成器,使用提供的链接,将生成:

<?php
$re = '/(["\'])(?:(?=(\\\\?))\2.)*?\1/m';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);

var_dump($matches);
  1. 正则表达式标志(可选)
  2. preg_match_all 而不是 preg_match