私は次のような文字列を持っています{"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クエリ内では検索したくありません。
そのための正規表現は何でしょうか
マーク・ベイカーは、あなたのためにほとんど答えてくれました.PHPには、json文字列をデコードする方法がすでにあります。自分自身を解析するよりも簡単です:
http://php.net/manual/en/function.json-decode.php
編集:この情報はデータベースに保存されているというあなたのコメントを見ました。その場合、json 文字列をデータベースに直接保存しません。すべての情報を 1 つの列に保持することで、リレーショナル データベースの目的を無効にしています。
シンプルで効果的な解決策は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"'