我有一些格式的数据
C222 = 50
C1234P687 = 'some text'
C123YYY = 'text'
C444 = 89
C345 = 3
C122P687 = 'some text'
C122YYY = 'text'
....
....
Run Code Online (Sandbox Code Playgroud)
基本上有3种不同的形式
只有数字在(=)符号的左侧具有可变长度.价值各不相同
我想将数据存储在db中
INSERT INTO datatable
c_id = "number after C"
p_id = "number after P" // if it exists for a line of data
value = 'value'
yyy = 'value'
Run Code Online (Sandbox Code Playgroud)
有任何想法如何检索这些数字?
谢谢
在PHP中使用正则表达式.以下正则表达式模式将匹配您提供的所有情况 - 将其与preg_match_all一起使用(传入数组PREG_SET_ORDER),然后传入的数组将包含每行数据的数组,每行的数组将包含5个元素.
(C[\d]+)(P[\d]+)?(YYY)? = (.+)
Run Code Online (Sandbox Code Playgroud)
数组的第一个元素将包含已测试的完整字符串.
数组的第二个元素将包含"C"数字.
如果存在,则数组的第三个元素将包含"P"数字,否则它将为空白.
如果存在,数组的第四个元素将包含"YYY",否则它将为空白.
数组的第五个元素将包含该值.
在回应之前的评论时,以下正则表达式是上述的修改版本,但不包括匹配值中的C和P:
C([\d]+)(?:P([\d]+))?(YYY)? = (.+)