【发布时间】:2026-01-27 15:30:01
【问题描述】:
早安,
我有很多行数据存储在 MySQL 表中。典型值可能如下所示:
::image-gallery::
::gallery-entry::images/01.jpg::/gallery-entry::
::/image-gallery::
有没有办法 - 通过正则表达式,我可以 a) 从第一行提取术语图像库(它可以是任何短语,而不仅仅是图像库),然后将中心线提取为两个 单独的值:
gallery-entry,然后是 images/01.jpg
可能有很多行 ::gallery-entry:: 值,它们也可以被称为任何东西。一个更完整的例子是:
::image-gallery::
::title::MY GALLERY::/title::
::date::2011-05-20::/date::
::gallery-entry::images/01.jpg::/gallery-entry::
::/image-gallery::
本质上我想要这些信息:上述情况下的内容类型(图片库),第一行和最后一行。然后我需要标题作为键值样式对,所以 title 作为键,MY GALLERY 作为值。然后,随后,我也需要此后的所有字段行(图库条目)作为键值对。
这是一个迁移脚本,其中旧系统的数据将被迁移到具有不同语法的新系统。
如果 MySQL select 语句不起作用,使用 PHP 脚本解析结果以进行数据提取会更容易吗?
我们总是感谢任何和所有的帮助。
亲切的问候, 西蒙
【问题讨论】:
-
这些例子代表表中的一行?我猜想只有 sql 的解决方案很难实现。通过快速查看 MySQL (dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp) 中的正则表达式支持,我认为 php 或您喜欢的任何其他语言将是一种更简单的方法。
-
您好,您可能需要更具体地了解数据的可能结构:标签是否单独包含多个结果集行('image-gallery')?
-
@paul W - 很抱歉回复延迟。但实际上我最终使用了 PHP 的 preg_match() 函数和一些简单的模式匹配。感谢您的反馈。
标签: mysql regex pattern-matching