我正在寻找序列化数据的数据库搜索。我目前使用 Symfony2 作为我的框架,使用 Doctrine 2 进行 pdo_mysql 调用。我想做的是创建一个查询,使用 REGEXP 来查找数组的某个部分中的数据。我试图在其中搜索的数据如下所示:-
a:1:{s:8:"bedrooms";a:5:{i:0;i:1;i:1;i:2;i:2;i:3;i:3;i:4;i:4;s:2:"5+";}}
假设我正在寻找一张有 3 间卧室的唱片,那么我希望它能找到:-
i:2;i:3
到目前为止我提出的查询是:-
SELECT * FROM table WHERE field_name REGEXP '.*"bedrooms"; a:[0-9]+:{i:[0-9]+;i:3;}.*';
但是这不起作用。有人可以帮我找到解决这个问题的方法吗?我认为这取决于正则表达式的编写方式。
还值得注意的是,该字段中还存储了其他数组,例如信用额度和其他数据。
提前谢谢您。
最佳答案
我相信您可以借助否定字符类 [^{}]
来完成此操作,它匹配除 {
和 } 之外的任何字符。
:
.*"bedrooms";a:[0-9]+:[{][^{}]*i:[0-9]+;i:3[^{}]*[}]
请参阅regex demo
关于php - 序列化数据中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35090326/