php - 序列化数据中的正则表达式

标签 php regex symfony serialization doctrine

我正在寻找序列化数据的数据库搜索。我目前使用 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/

相关文章:

匹配多个重复 block 的 Javascript 正则表达式

php - 如何限制登录到 Symfony2 中已经登录的用户

php - 如何使用 PHPUnit 测试 Symfony2 模型

php - 如何使用doctrine2检查symfony2中的字段是否自动增量?

php - 使用十六进制编码来防止SQL注入(inject)有什么弱点吗?

php - SELECT COUNT(id) 没有给我正确的值

javascript - 正则表达式替换字符串逗号的一部分

php - 如何解决php中备份文件的问题

带有可选字符的 5 位数字的正则表达式

node.js - RabbitMQ - 并行任务消耗