2

我需要一个 PHP 的正则表达式,preg_match它可以处理以下内容:

variable1=true&variable2=1,2,3&variable3="test"&variable4!=true&variable5!=4,5,6&variable!="test"

我会更改为 json 之类的东西,但这不支持我需要的向后兼容性,任何建议,我得到的最接近的是:

/((\w+)(=|!=)("\w+"|true|false|\d+)*)/

这是部分成功的,任何帮助都会很棒。

4

2 回答 2

3

使用字符串函数

$string = 'variable1=true&variable2=1,2,3&variable3="test"&variable4!=true&variable5!=4,5,6&variable!="test"';
$pairs = explode('&', $string);
foreach ($pairs as $pair) {
    if (strstr($pair, '!=')) {
        list($key, $value) = explode('!=', $pair);
    } else {
        list($key, $value) = explode('=', $pair);
    }
    $values[$key] = $value;
}

在键盘上查看输出

此代码首先使用&, 将字符串拆分为键值对。之后,它遍历每一对并尝试再次拆分它,首先使用!=,如果失败,使用=


使用正则表达式

preg_match_all('/((\w+)(=|!=)("\w+"|true|false|[\d\,]+)*)/', $string, $matches);

[...]我添加了括号\d和转义的逗号\,

于 2012-06-19T12:10:45.517 回答
3

实际上有一个内置函数parse_str,正是为了这个目的。这里不需要正则表达式。

于 2012-06-19T12:18:15.287 回答