如何在PHP中按空格、数字和引号拆分字符串?

如何在PHP中按空格、数字和引号拆分字符串?,php,regex,Php,Regex,我正在用PHP解析一个具有以下模式的字符串 VARIABLE Key1 Value1 Key2 Value2 Key3 Value3 ... 类似于: JOBGRADE 'P' 'Parttime Employee' 'C' 'Customer Support' 或 此行以无引号的字符串开头,可以有单引号或双引号的字符串和/或数字。它可以有一到多个键值对 我需要以两种方式拆分字符串: 第一个获取非数字的无引号字符串 第二个用于提取数值和/或带引号的字符串-可以是single或dobule 所

我正在用PHP解析一个具有以下模式的字符串

VARIABLE Key1 Value1 Key2 Value2 Key3 Value3 ...
类似于:

JOBGRADE 'P' 'Parttime Employee' 'C' 'Customer Support'

此行以无引号的字符串开头,可以有单引号或双引号的字符串和/或数字。它可以有一到多个键值对

我需要以两种方式拆分字符串:

第一个获取非数字的无引号字符串

第二个用于提取数值和/或带引号的字符串-可以是single或dobule

所以我需要

  • 职级
  • P:兼职员工
  • C:客户支持
  • 某些变量
  • 1:价值1
  • 2:价值2
  • 我的想法:

    我考虑拆分字符串并对其进行迭代以测试:

    对于1:如果值不是数字且不带引号,则为变量名

    对于2+:不确定执行此操作的简单方法,因为我必须检测键和值之间的差异:

    问题


    如何区分键/值?

    将其视为CSV,并对其进行迭代以将其分割。变量为
    [0]
    ,键从
    [1]
    开始为奇数,值从
    [2]
    开始为偶数

    var_dump(str_getcsv("JOBGRADE 'P' 'Parttime Employee' 'C' 'Customer Support'",
      ' ', "'"));
    
    首先对变量字符串使用explode()将所有部分用一个空格分隔:

    //我不会使用第一个项目,所以删除它,保留作为标题,以备以后使用

    $var_name = array_shift($variables);
    
    //其次,循环项目(步骤2),并将键和值添加到结果数组中

    $result = array();
    
    for ($i = 0; $i < count($variables); $i = $i +2) {
      $result[$variables[$i]] = $variables[$i + 1];
    }
    
    print_r($result);
    
    $result=array();
    对于($i=0;$i
    谢谢-非常好的解决方案。我从未想过使用CSV。
    $variables = explode("JOBGRADE 'P' 'Parttime Employee' 'C' 'Customer Support'", ' ');
    
    $var_name = array_shift($variables);
    
    $result = array();
    
    for ($i = 0; $i < count($variables); $i = $i +2) {
      $result[$variables[$i]] = $variables[$i + 1];
    }
    
    print_r($result);