我有类似的字符串{"A":["3", "4", "5", "6"],"B":["3", "4", "5", "6"],"C":[{"2":"y"},{"3":"y"},{"4":"y"},{"5":"y"}],"D":["3", "4", "5", "6"]}
我想在 B 数组中搜索“5”表示“5”,而不是在任何其他内部 mysql 查询中搜索。
什么是正则表达式
Mark Baker 几乎为你回答了这个问题:PHP 已经有了解码 json 字符串的方法。这比解析自己更容易:
http://php.net/manual/en/function.json-decode.php
编辑:我看到您的评论说此信息存储在数据库中。在这种情况下,我不会将 json 字符串直接存储在数据库中。通过将所有信息保存在一列中,您有点违背了关系数据库的目的。
简单有效的解决方案是REGEXP '.*"B":\\[["0-9,]*"5"["0-9,]*\\]'
既然是json,就用json_decode:
$str = '{"A":["3", "4", "5", "6"],"B":["3", "4", "5", "6"],"C":[{"2":"y"},{"3":"y"},{"4":"y"},{"5":"y"}],"D":["3", "4", "5", "6"]}';
$obj = json_decode($str);
echo $obj->{'B'}[2];
输出:
5
你可以尝试这样的事情:
REGEXP '"B":\[([^"\]]")*5"'