我正在用php解析一个字符串,它具有以下模式
VARIABLE Key1 Value1 Key2 Value2 Key3 Value3 ...
类似:
JOBGRADE 'P' 'Parttime Employee' 'C' 'Customer Support'
或
SOMEVARIABLE 1 "Value1" 2 'Value2'
这一行以未加引号的字符串开头,可以有单引号或双引号的字符串和/或数字。它可以有一到多个键值对。
我需要把绳子分成两部分:
第一个获取非数值的无引号字符串。
第二个用于提取数值和/或带引号的字符串-可以是单个或多个
因此我需要
作业等级
P:兼职员工
C:客户支持
或
个别的
1:Value1
2:Value2
我的想法是:
我考虑过拆分字符串并遍历它来测试:
for 1:如果值不是数字且没有引号,则为变量名
对于2+:不确定执行此操作的简单方法,因为我必须检测键和值之间的差异:
问题:
如何区分键/值?
最佳答案
将其视为csv,并对其进行迭代以将其分割。变量是[0]
,键是从[1]
开始的奇数,值是从[2]
开始的偶数。
var_dump(str_getcsv("JOBGRADE 'P' 'Parttime Employee' 'C' 'Customer Support'",
' ', "'"));
array(5) {
[0]=>
string(8) "JOBGRADE"
[1]=>
string(1) "P"
[2]=>
string(17) "Parttime Employee"
[3]=>
string(1) "C"
[4]=>
string(16) "Customer Support"
}