我正在用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"
}

09-10 07:57
查看更多