php preg_match_all避免使用引号

时间:2016-10-18 11:25:32

标签: php regex binding moodle preg-match-all

在Moodle核心内部,当向数据库发送查询时,调用 preg_match_all 寻找:(冒号),以便查找查询的参数。

我有一个字符串(内部"")由数字,冒号和字母(" 102516101:t")组成。

当然,它不会涉及参数。由于冒号(:),Moodle仍然期待一个。

如何阻止 preg_match_all 查看引号内? 还是有人有另一个想法?

1 个答案:

答案 0 :(得分:2)

根据上面留下的评论,您应该明确指定SQL语句中使用的变量。换句话说,您不应该手动构建SQL语句,也不应该是最低要求。

示例:

$sql = "SELECT * FROM {groups} WHERE name = :name";
$params = array('name' => '102516101:t');
$DB->execute($sql, $params);

您还会注意到表格名称的指定方式如下:{table_name},它们会使用正确的前缀自动展开。