从字符串中获取param并转换为数组php

时间:2013-03-25 20:02:14

标签: php regex

我有来自用户的输入字符串。来自用户的这种输入是不可预测的。这意味着用户可以随意输入任何字符串。 我想过滤匹配以下模式的输入并将其作为数组返回

以下字符串模式应该有效:

product=bag, product=tshirt, product=shoes

product=bag status=sold, product=jeans, product=shoes

product=all

我希望输出如下所示:

Array(
 [0] => Array
  (
    [product] => bag
    [status]  => sold
  )

 [1] => Array
  (
    [product] => jeans
  )

 [2] => Array
  (
    [product] => shoes
  )
)

我想可以通过在explode旁边使用preg_match_all()来实现。任何人都可以使用preg_match_all给我示例?或者任何其他方式对我来说都是好的,只要是最好的方法。

$string = 'product=bag status=sold, product=tshirt, product=shoes';
$m = preg_match_all('/needregexrulehere/', $string, $matches);

1 个答案:

答案 0 :(得分:1)

你不需要正则表达式,你可以这样做:

$return = array();
foreach( str_getcsv( $string) as $line) {
    parse_str( str_replace( ' ' , '&', $line), $temp);
    $return[] = $temp;
}

will output

Array
(
    [0] => Array
        (
            [product] => bag
            [status] => sold
        )

    [1] => Array
        (
            [product] => tshirt
        )

    [2] => Array
        (
            [product] => shoes
        )

)

我会将错误检查/输入卫生设置留给OP。