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

标签 php regex

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

VARIABLE Key1 Value1 Key2 Value2 Key3 Value3 ...

类似于:

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

SOMEVARIABLE 1 "Value1" 2 'Value2'

此行以不带引号的字符串开头,可以包含单引号或双引号字符串和/或数字。它可以有一对多的键值对。

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

第一个得到非数字的不带引号的字符串。

第二个提取数值和/或带引号的字符串 - 可以是单个或两个

因此我需要

  1. 工作等级
  2. P:兼职员工
  3. C:客户支持

  1. 一些变量
  2. 1:值1
  3. 2:值2

我的想法:

我考虑过拆分字符串并遍历它来测试:

对于 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"
}

关于php - 如何在 PHP 中按空格、数字和引号拆分字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4336159/

相关文章:

php - 使用 `<textarea>` 来防止脚本

php - Bootstrap 表单没有将值传递给 php

php - 如何进行参数化查询

具有多个字符串和值的正则表达式

php - 我需要从 mysql 数据库中获取数据并将其放入 json 数组并将 json 数组用于文本框自动完成

javascript - 用正则表达式分割字符串 - 正则表达式太贪婪

javascript - 密码正则表达式

angularjs - ng-pattern 只允许字母、数字、点、下划线和破折号

Python RegEx 与 Beautifulsoup 4 不起作用

php - 这是我的 laravel 项目中的一个额外的 ")",它为我查询 laravel