php mysql 如何处理查询中存在正则特殊字符的查询
数据示例
需要查询/^DO-BOM-\d{4}$/
测试可以使用如下sql查询
SELECT * FROM tr_air_status_identify_algorithm WHERE keywords = '/^DO-BOM-\\d{4}$/';
规律(主要取出mysql不能查询的符号即可)
- \d前面多增加一个\ 既可以
- 存在 ' 的 转为 '\
代码处理
$where[] = 'keyword = ?';
//词中存在\
if ($type == 'del') {
// 在 \d 前添加一个额外的反斜杠
$keywords = str_replace('\d', '\\\d', $keyword);
}
//词中存在引号
$raw[] = str_replace("'", "\'", $keyword);
# 执行查询
$check = Table::init()->electWhereRaw($where, $raw);